xref: /plan9-contrib/sys/src/cmd/size.c (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
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*);
73e12c5d1SDavid du Colombier 
83e12c5d1SDavid du Colombier void
93e12c5d1SDavid du Colombier main(int argc, char *argv[])
103e12c5d1SDavid du Colombier {
113e12c5d1SDavid du Colombier 	int err = 0;
123e12c5d1SDavid du Colombier 
133e12c5d1SDavid du Colombier 	USED(argc);
143e12c5d1SDavid du Colombier 	if(*++argv == 0)
153e12c5d1SDavid du Colombier 		err |= size("v.out");
163e12c5d1SDavid du Colombier 	else
173e12c5d1SDavid du Colombier 		while(*argv)
183e12c5d1SDavid du Colombier 			err |= size(*argv++);
193e12c5d1SDavid du Colombier 	if(err)
203e12c5d1SDavid du Colombier 		exits("error");
213e12c5d1SDavid du Colombier 	else
223e12c5d1SDavid du Colombier 		exits(0);
233e12c5d1SDavid du Colombier }
243e12c5d1SDavid du Colombier 
253e12c5d1SDavid du Colombier int
263e12c5d1SDavid du Colombier size(char *file)
273e12c5d1SDavid du Colombier {
283e12c5d1SDavid du Colombier 	int fd;
293e12c5d1SDavid du Colombier 	Fhdr f;
303e12c5d1SDavid du Colombier 
313e12c5d1SDavid du Colombier 	if((fd = open(file, OREAD)) < 0){
323e12c5d1SDavid du Colombier 		fprint(2, "size: ");
333e12c5d1SDavid du Colombier 		perror(file);
343e12c5d1SDavid du Colombier 		return 1;
353e12c5d1SDavid du Colombier 	}
363e12c5d1SDavid du Colombier 	if (crackhdr(fd, &f)) {
37*219b2ee8SDavid du Colombier 		print("%ldt + %ldd + %ldb = %ld\t%s\n",f.txtsz,f.datsz,
38*219b2ee8SDavid du Colombier 			f.bsssz, f.txtsz+f.datsz+f.bsssz, file);
393e12c5d1SDavid du Colombier 		close(fd);
403e12c5d1SDavid du Colombier 		return 0;
413e12c5d1SDavid du Colombier 	}
423e12c5d1SDavid du Colombier 	fprint(2, "size: %s not an a.out\n", file);
433e12c5d1SDavid du Colombier 	close(fd);
443e12c5d1SDavid du Colombier 	return 1;
453e12c5d1SDavid du Colombier }
46