BSD 3 development
authorBill Joy <wnj@ucbvax.Berkeley.EDU>
Fri, 26 Oct 1979 16:09:57 +0000 (08:09 -0800)
committerBill Joy <wnj@ucbvax.Berkeley.EDU>
Fri, 26 Oct 1979 16:09:57 +0000 (08:09 -0800)
Work on file usr/src/cmd/size.c

Synthesized-from: 3bsd

usr/src/cmd/size.c [new file with mode: 0644]

diff --git a/usr/src/cmd/size.c b/usr/src/cmd/size.c
new file mode 100644 (file)
index 0000000..6aedaef
--- /dev/null
@@ -0,0 +1,46 @@
+#include       <stdio.h>
+#include       <a.out.h>
+
+/*
+       size -- determine object size
+
+*/
+
+int a_magic[] = {A_MAGIC1,A_MAGIC2,A_MAGIC3,A_MAGIC4,0412,0413,0};
+
+main(argc, argv)
+char **argv;
+{
+       struct exec buf;
+       long sum;
+       int gorp,i;
+       FILE *f;
+
+       if (argc==1) {
+               *argv = "a.out";
+               argc++;
+               --argv;
+       }
+       gorp = argc;
+       while(--argc) {
+               ++argv;
+               if ((f = fopen(*argv, "r"))==NULL) {
+                       printf("size: %s not found\n", *argv);
+                       continue;
+               }
+               fread((char *)&buf, sizeof(buf), 1, f);
+               for(i=0;a_magic[i];i++)
+                       if(a_magic[i] == buf.a_magic) break;
+               if(a_magic[i] == 0) {
+                       printf("size: %s not an object file\n", *argv);
+                       fclose(f);
+                       continue;
+               }
+               if (gorp>2)
+                       printf("%s: ", *argv);
+               printf("%u+%u+%u = ", buf.a_text,buf.a_data,buf.a_bss);
+               sum = (long) buf.a_text + (long) buf.a_data + (long) buf.a_bss;
+               printf("%Db = 0x%Xb\n", sum, sum);
+               fclose(f);
+       }
+}