2 * SDBM Database Recovery Utility
4 * (c) 2000 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
17 main(int argc, char **argv)
19 struct sdbm *src, *dest;
20 struct sdbm_options op;
24 die("Usage: db-rebuild <src> <dest>");
26 bzero(&op, sizeof(op));
32 die("Source open failed");
36 if (e < 0 && errno != ENOENT)
39 op.flags = SDBM_CREAT | SDBM_WRITE | SDBM_FAST;
40 op.page_order = src->root->page_order;
41 op.key_size = src->root->key_size;
42 op.val_size = src->root->val_size;
43 dest = sdbm_open(&op);
45 die("Destination open failed");
47 puts("Rebuilding database...");
51 byte key[4096], val[4096];
52 int klen = sizeof(key);
53 int vlen = sizeof(val);
54 e = sdbm_get_next(src, key, &klen, val, &vlen);
58 printf("sdbm_get_next: error %d\n", e);
64 if (sdbm_store(dest, key, klen, val, vlen) == 0)
65 printf("sdbm_store: duplicate key\n");
70 printf("Copied %d keys\n", c);