Subversion Repositories planix.SVN

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
 * 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);
}