code: plan9front

ref: 5622b0bbd878dbc34045cc6fd37cffa64461eabe
dir: /sys/src/cmd/replica/revdump.c/

View raw version
#include <u.h>
#include <libc.h>
#include <bio.h>
#include <disk.h>

static void
enm(char *new, char *old, Dir *d, void*)
{
	print("%s %s%s%s%luo %s %s %s\n",
		new, (d->mode&DMDIR)?"d":"", (d->mode&DMAPPEND)?"a":"",
		(d->mode&DMEXCL)?"l":"", (d->mode&~(DMDIR|DMAPPEND|DMEXCL)), 
		d->uid, d->gid, old);
}

static void
usage(void)
{
	fprint(2, "usage: protodump [-r root] proto\n");
	exits("usage");
}

void
main(int argc, char **argv)
{
	char *root;

	root = "/";
	ARGBEGIN{
	case 'r':
		root = EARGF(usage());
		break;
	}ARGEND

	if(argc != 1)
		usage();

	if(revrdproto(argv[0], root, enm, nil, nil) < 0)
		sysfatal("rdproto: %r");
	exits(nil);
}