1 #include <u.h>
2 #include <libc.h>
3 #include <bio.h>
4 #include <disk.h>
5
6 static void
enm(char * new,char * old,Dir * d,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
usage(void)16 usage(void)
17 {
18 fprint(2, "usage: protodump [-r root] proto\n");
19 exits("usage");
20 }
21
22 void
main(int argc,char ** argv)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