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