1 #include <u.h> 2 #include <libc.h> 3 #include <bio.h> 4 #include <disk.h> 5 6 static void 7 enm(char *new, char *old, Dir *d, void*) 8 { 9 print("%s %s%s%s%luo %s %s %s\n", 10 new, (d->mode&DMDIR)?"d":"", (d->mode&DMAPPEND)?"a":"", 11 (d->mode&DMEXCL)?"l":"", (d->mode&~(DMDIR|DMAPPEND|DMEXCL)), 12 d->uid, d->gid, old); 13 } 14 15 static void 16 usage(void) 17 { 18 fprint(2, "usage: protodump [-r root] proto\n"); 19 exits("usage"); 20 } 21 22 void 23 main(int argc, char **argv) 24 { 25 char *root; 26 27 root = "/"; 28 ARGBEGIN{ 29 case 'r': 30 root = EARGF(usage()); 31 break; 32 }ARGEND 33 34 if(argc != 1) 35 usage(); 36 37 if(revrdproto(argv[0], root, enm, nil, nil) < 0) 38 sysfatal("rdproto: %r"); 39 exits(nil); 40 } 41