2 * dbd - dump a dbm data file
14 #define empty(page) (((short *) page)[0] == 0)
28 name = (char *) malloc((n = strlen(p)) + 5);
30 oops("cannot get memory");
33 strcpy(name + n, ".pag");
35 if ((pagf = open(name, O_RDONLY)) < 0)
36 oops("cannot open %s.", name);
41 oops("usage: %s dbname", progname);
53 while ((r = read(pagf, pag, PBLKSIZ)) > 0) {
55 fprintf(stderr, "%d: bad page.\n", n);
64 fprintf(stderr, "%d pages (%d holes).\n", n, o);
66 oops("read failed: block %d", n);
76 register short *ino = (short *) pag;
79 for (i = 1; i < ino[0]; i += 2) {
80 printf("\t[%d]: ", ino[i]);
81 for (n = ino[i]; n < off; n++)
85 printf("[%d]: ", ino[i + 1]);
86 for (n = ino[i + 1]; n < off; n++)
98 register short *ino = (short *) pag;
101 for (i = 1; i < ino[0]; i += 2) {
102 for (n = ino[i]; n < off; n++)
107 for (n = ino[i + 1]; n < off; n++)