2 * dbd - dump a dbm data file
14 #define empty(page) (((short *) page)[0] == 0)
17 main(int argc, char **argv)
27 name = (char *) malloc((n = strlen(p)) + 5);
29 oops("cannot get memory");
32 strcpy(name + n, ".pag");
34 if ((pagf = open(name, O_RDONLY)) < 0)
35 oops("cannot open %s.", name);
40 oops("usage: %s dbname", progname);
52 while ((r = read(pagf, pag, PBLKSIZ)) > 0) {
54 fprintf(stderr, "%d: bad page.\n", n);
63 fprintf(stderr, "%d pages (%d holes).\n", n, o);
65 oops("read failed: block %d", n);
75 register short *ino = (short *) pag;
78 for (i = 1; i < ino[0]; i += 2) {
79 printf("\t[%d]: ", ino[i]);
80 for (n = ino[i]; n < off; n++)
84 printf("[%d]: ", ino[i + 1]);
85 for (n = ino[i + 1]; n < off; n++)
97 register short *ino = (short *) pag;
100 for (i = 1; i < ino[0]; i += 2) {
101 for (n = ino[i]; n < off; n++)
106 for (n = ino[i + 1]; n < off; n++)