48 lines · 717 B · C
RawDownload
#include	<u.h>#include	<libc.h>#include	<bio.h>#include	<mach.h> intsize(char *file){	int fd;	Fhdr f; 	if((fd = open(file, OREAD)) < 0){		fprint(2, "size: ");		perror(file);		return 1;	}	if(crackhdr(fd, &f)) {		print("%ldt + %ldd + %ldb = %ld\t%s\n", f.txtsz, f.datsz,			f.bsssz, f.txtsz+f.datsz+f.bsssz, file);		close(fd);		return 0;	}	fprint(2, "size: %s not an a.out\n", file);	close(fd);	return 1;} voidmain(int argc, char *argv[]){	char *err;	int i; 	ARGBEGIN {	default:		fprint(2, "usage: size [a.out ...]\n");		exits("usage");	} ARGEND; 	err = 0;	if(argc == 0)		if(size("8.out"))			err = "error";	for(i=0; i<argc; i++)		if(size(argv[i]))			err = "error";	exits(err);}