home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / cmd / size.c < prev    next >
Encoding:
C/C++ Source or Header  |  1979-01-10  |  851 b   |  47 lines

  1. #include    <stdio.h>
  2. #include     <a.out.h>
  3.  
  4. /*
  5.     size -- determine object size
  6.  
  7. */
  8.  
  9. int a_magic[] = {A_MAGIC1,A_MAGIC2,A_MAGIC3,A_MAGIC4,0};
  10.  
  11. main(argc, argv)
  12. char **argv;
  13. {
  14.     struct exec buf;
  15.     long sum;
  16.     int gorp,i;
  17.     FILE *f;
  18.  
  19.     if (argc==1) {
  20.         *argv = "a.out";
  21.         argc++;
  22.         --argv;
  23.     }
  24.     gorp = argc;
  25.     while(--argc) {
  26.         ++argv;
  27.         if ((f = fopen(*argv, "r"))==NULL) {
  28.             printf("size: %s not found\n", *argv);
  29.             continue;
  30.         }
  31.         fread((char *)&buf, sizeof(buf), 1, f);
  32.         for(i=0;a_magic[i];i++)
  33.             if(a_magic[i] == buf.a_magic) break;
  34.         if(a_magic[i] == 0) {
  35.             printf("size: %s not an object file\n", *argv);
  36.             fclose(f);
  37.             continue;
  38.         }
  39.         if (gorp>2)
  40.             printf("%s: ", *argv);
  41.         printf("%u+%u+%u = ", buf.a_text,buf.a_data,buf.a_bss);
  42.         sum = (long) buf.a_text + (long) buf.a_data + (long) buf.a_bss;
  43.         printf("%Db = 0%Ob\n", sum, sum);
  44.         fclose(f);
  45.     }
  46. }
  47.