2 * dbd - dump a dbm data file
14 #define empty(page) (((short *) page)[0] == 0)
28 name = (char *) malloc((n = strlen(p)) + 5);
30 strcpy(name + n, ".pag");
32 if ((pagf = open(name, O_RDONLY)) < 0)
33 oops("cannot open %s.", name);
38 oops("usage: %s dbname", progname);
50 while ((r = read(pagf, pag, PBLKSIZ)) > 0) {
52 fprintf(stderr, "%d: bad page.\n", n);
61 fprintf(stderr, "%d pages (%d holes).\n", n, o);
63 oops("read failed: block %d", n);
73 register short *ino = (short *) pag;
76 for (i = 1; i < ino[0]; i += 2) {
77 printf("\t[%d]: ", ino[i]);
78 for (n = ino[i]; n < off; n++)
82 printf("[%d]: ", ino[i + 1]);
83 for (n = ino[i + 1]; n < off; n++)
95 register short *ino = (short *) pag;
98 for (i = 1; i < ino[0]; i += 2) {
99 for (n = ino[i]; n < off; n++)
104 for (n = ino[i + 1]; n < off; n++)