xref: /original-bsd/usr.bin/size/size.c (revision 957a0273)
1 static	char *sccsid = "@(#)size.c	4.3 (Berkeley) 07/02/81";
2 /*
3  * size
4  */
5 
6 #include	<stdio.h>
7 #include 	<a.out.h>
8 
9 int	header;
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 		if (fread((char *)&buf, sizeof(buf), 1, f) != 1 ||
32 		    N_BADMAG(buf)) {
33 			printf("size: %s not an object file\n", *argv);
34 			fclose(f);
35 			continue;
36 		}
37 		if (header == 0) {
38 			printf("text\tdata\tbss\tdec\thex\n");
39 			header = 1;
40 		}
41 		printf("%u\t%u\t%u\t", 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("%ld\t%lx", sum, sum);
44 		if (gorp>2)
45 			printf("\t%s", *argv);
46 		printf("\n");
47 		fclose(f);
48 	}
49 }
50