42 lines · 652 B · C
RawDownload
/* * compact a database file */#include "all.h" Db *db; voidusage(void){	fprint(2, "usage: replica/compactdb db\n");	exits("usage");} voidmain(int argc, char **argv){	Avlwalk *w;	Biobuf bout;	Entry *e; 	quotefmtinstall();	ARGBEGIN{	default:		usage();	}ARGEND 	if(argc != 1)		usage(); 	Binit(&bout, 1, OWRITE);	db = opendb(argv[0]);	w = avlwalk(db->avl);	while(e = (Entry*)avlnext(w))		Bprint(&bout, "%q %q %luo %q %q %lud %lld\n",			e->name, strcmp(e->name, e->d.name)==0 ? "-" : e->d.name, e->d.mode,			e->d.uid, e->d.gid, e->d.mtime, e->d.length);	if(Bterm(&bout) < 0)		sysfatal("writing output: %r"); 	exits(nil);}