xref: /plan9/sys/src/cmd/size.c (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1 #include	<u.h>
2 #include	<libc.h>
3 #include	<bio.h>
4 #include	<mach.h>
5 
6 int
size(char * file)7 size(char *file)
8 {
9 	int fd;
10 	Fhdr f;
11 
12 	if((fd = open(file, OREAD)) < 0){
13 		fprint(2, "size: ");
14 		perror(file);
15 		return 1;
16 	}
17 	if(crackhdr(fd, &f)) {
18 		print("%ldt + %ldd + %ldb = %ld\t%s\n", f.txtsz, f.datsz,
19 			f.bsssz, f.txtsz+f.datsz+f.bsssz, file);
20 		close(fd);
21 		return 0;
22 	}
23 	fprint(2, "size: %s not an a.out\n", file);
24 	close(fd);
25 	return 1;
26 }
27 
28 void
main(int argc,char * argv[])29 main(int argc, char *argv[])
30 {
31 	char *err;
32 	int i;
33 
34 	ARGBEGIN {
35 	default:
36 		fprint(2, "usage: size [a.out ...]\n");
37 		exits("usage");
38 	} ARGEND;
39 
40 	err = 0;
41 	if(argc == 0)
42 		if(size("8.out"))
43 			err = "error";
44 	for(i=0; i<argc; i++)
45 		if(size(argv[i]))
46 			err = "error";
47 	exits(err);
48 }
49