xref: /plan9/sys/src/cmd/size.c (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
13e12c5d1SDavid du Colombier #include	<u.h>
23e12c5d1SDavid du Colombier #include	<libc.h>
3bd389b36SDavid du Colombier #include	<bio.h>
43e12c5d1SDavid du Colombier #include	<mach.h>
53e12c5d1SDavid du Colombier 
63e12c5d1SDavid du Colombier int
size(char * file)73e12c5d1SDavid du Colombier size(char *file)
83e12c5d1SDavid du Colombier {
93e12c5d1SDavid du Colombier 	int fd;
103e12c5d1SDavid du Colombier 	Fhdr f;
113e12c5d1SDavid du Colombier 
123e12c5d1SDavid du Colombier 	if((fd = open(file, OREAD)) < 0){
133e12c5d1SDavid du Colombier 		fprint(2, "size: ");
143e12c5d1SDavid du Colombier 		perror(file);
153e12c5d1SDavid du Colombier 		return 1;
163e12c5d1SDavid du Colombier 	}
173e12c5d1SDavid du Colombier 	if(crackhdr(fd, &f)) {
18219b2ee8SDavid du Colombier 		print("%ldt + %ldd + %ldb = %ld\t%s\n", f.txtsz, f.datsz,
19219b2ee8SDavid du Colombier 			f.bsssz, f.txtsz+f.datsz+f.bsssz, file);
203e12c5d1SDavid du Colombier 		close(fd);
213e12c5d1SDavid du Colombier 		return 0;
223e12c5d1SDavid du Colombier 	}
233e12c5d1SDavid du Colombier 	fprint(2, "size: %s not an a.out\n", file);
243e12c5d1SDavid du Colombier 	close(fd);
253e12c5d1SDavid du Colombier 	return 1;
263e12c5d1SDavid du Colombier }
27*7dd7cddfSDavid du Colombier 
28*7dd7cddfSDavid du Colombier void
main(int argc,char * argv[])29*7dd7cddfSDavid du Colombier main(int argc, char *argv[])
30*7dd7cddfSDavid du Colombier {
31*7dd7cddfSDavid du Colombier 	char *err;
32*7dd7cddfSDavid du Colombier 	int i;
33*7dd7cddfSDavid du Colombier 
34*7dd7cddfSDavid du Colombier 	ARGBEGIN {
35*7dd7cddfSDavid du Colombier 	default:
36*7dd7cddfSDavid du Colombier 		fprint(2, "usage: size [a.out ...]\n");
37*7dd7cddfSDavid du Colombier 		exits("usage");
38*7dd7cddfSDavid du Colombier 	} ARGEND;
39*7dd7cddfSDavid du Colombier 
40*7dd7cddfSDavid du Colombier 	err = 0;
41*7dd7cddfSDavid du Colombier 	if(argc == 0)
42*7dd7cddfSDavid du Colombier 		if(size("8.out"))
43*7dd7cddfSDavid du Colombier 			err = "error";
44*7dd7cddfSDavid du Colombier 	for(i=0; i<argc; i++)
45*7dd7cddfSDavid du Colombier 		if(size(argv[i]))
46*7dd7cddfSDavid du Colombier 			err = "error";
47*7dd7cddfSDavid du Colombier 	exits(err);
48*7dd7cddfSDavid du Colombier }
49