Research V7 development
[unix-history] / usr / src / cmd / size.c
CommitLineData
b4e2e355
KT
1#include <stdio.h>
2#include <a.out.h>
3
4/*
5 size -- determine object size
6
7*/
8
9int a_magic[] = {A_MAGIC1,A_MAGIC2,A_MAGIC3,A_MAGIC4,0};
10
11main(argc, argv)
12char **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}