diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/cmd/replica/compactdb.c |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/cmd/replica/compactdb.c')
-rwxr-xr-x | sys/src/cmd/replica/compactdb.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/sys/src/cmd/replica/compactdb.c b/sys/src/cmd/replica/compactdb.c new file mode 100755 index 000000000..df9af7809 --- /dev/null +++ b/sys/src/cmd/replica/compactdb.c @@ -0,0 +1,42 @@ +/* + * compact a database file + */ +#include "all.h" + +Db *db; + +void +usage(void) +{ + fprint(2, "usage: replica/compactdb db\n"); + exits("usage"); +} + +void +main(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); +} |