manual page distributed with 4.2BSD
[unix-history] / usr / src / usr.bin / size / size.c
CommitLineData
f7a78e6d 1static char *sccsid = "@(#)size.c 4.4 (Berkeley) %G%";
14a73586
BJ
2/*
3 * size
4 */
c7485fe5 5
14a73586
BJ
6#include <stdio.h>
7#include <a.out.h>
8
c7485fe5
BJ
9int header;
10
14a73586
BJ
11main(argc, argv)
12char **argv;
13{
14 struct exec buf;
15 long sum;
16 int gorp,i;
f7a78e6d 17 int err = 0;
14a73586
BJ
18 FILE *f;
19
20 if (argc==1) {
21 *argv = "a.out";
22 argc++;
23 --argv;
24 }
25 gorp = argc;
26 while(--argc) {
27 ++argv;
28 if ((f = fopen(*argv, "r"))==NULL) {
29 printf("size: %s not found\n", *argv);
f7a78e6d 30 err++;
14a73586
BJ
31 continue;
32 }
cd743e46
BJ
33 if (fread((char *)&buf, sizeof(buf), 1, f) != 1 ||
34 N_BADMAG(buf)) {
14a73586
BJ
35 printf("size: %s not an object file\n", *argv);
36 fclose(f);
f7a78e6d 37 err++;
14a73586
BJ
38 continue;
39 }
c7485fe5
BJ
40 if (header == 0) {
41 printf("text\tdata\tbss\tdec\thex\n");
42 header = 1;
43 }
44 printf("%u\t%u\t%u\t", buf.a_text,buf.a_data,buf.a_bss);
14a73586 45 sum = (long) buf.a_text + (long) buf.a_data + (long) buf.a_bss;
c7485fe5
BJ
46 printf("%ld\t%lx", sum, sum);
47 if (gorp>2)
48 printf("\t%s", *argv);
49 printf("\n");
14a73586
BJ
50 fclose(f);
51 }
f7a78e6d 52 exit(err);
14a73586 53}