|
|
1.1 root 1: /*
2: * Copyright (c) 1988 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that: (1) source distributions retain this entire copyright
7: * notice and comment, and (2) distributions including binaries display
8: * the following acknowledgement: ``This product includes software
9: * developed by the University of California, Berkeley and its contributors''
10: * in the documentation or other materials provided with the distribution
11: * and in all advertising materials mentioning features or use of this
12: * software. Neither the name of the University nor the names of its
13: * contributors may be used to endorse or promote products derived
14: * from this software without specific prior written permission.
15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18: */
19:
20: #ifndef lint
21: char copyright[] =
22: "@(#) Copyright (c) 1988 Regents of the University of California.\n\
23: All rights reserved.\n";
24: #endif /* not lint */
25:
26: #ifndef lint
27: static char sccsid[] = "@(#)size.c 4.7 (Berkeley) 6/1/90";
28: #endif /* not lint */
29:
30: #include <sys/param.h>
31: #include <sys/file.h>
32: #include <a.out.h>
33: #include <stdio.h>
34:
35: main(argc, argv)
36: int argc;
37: char **argv;
38: {
39: struct exec head;
40: u_long total;
41: int exval, fd, first;
42:
43: if (!*argv[1])
44: *argv = "a.out";
45: else
46: ++argv;
47: for (first = 1, exval = 0; *argv; ++argv) {
48: if ((fd = open(*argv, O_RDONLY, 0)) < 0) {
49: fprintf(stderr, "size: ");
50: perror(*argv);
51: exval = 1;
52: continue;
53: }
54: if (read(fd, (char *)&head, sizeof(head)) != sizeof(head) ||
55: N_BADMAG(head)) {
56: fprintf(stderr, "size: %s: not in a.out format.\n",
57: *argv);
58: exval = 1;
59: continue;
60: }
61: (void)close(fd);
62: if (first) {
63: first = 0;
64: printf("text\tdata\tbss\tdec\thex\n");
65: }
66: total = head.a_text + head.a_data + head.a_bss;
67: printf("%lu\t%lu\t%lu\t%lu\t%lx", head.a_text, head.a_data,
68: head.a_bss, total, total);
69: if (argc > 2)
70: printf("\t%s", *argv);
71: printf("\n");
72: }
73: exit(exval);
74: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.