2 * dbd - dump a dbm data file
13 #define empty(page) (((short *) page)[0] == 0)
27 name = (char *) malloc((n = strlen(p)) + 5);
29 strcpy(name + n, ".pag");
31 if ((pagf = open(name, O_RDONLY)) < 0)
32 oops("cannot open %s.", name);
37 oops("usage: %s dbname", progname);
49 while ((r = read(pagf, pag, PBLKSIZ)) > 0) {
51 fprintf(stderr, "%d: bad page.\n", n);
60 fprintf(stderr, "%d pages (%d holes).\n", n, o);
62 oops("read failed: block %d", n);
72 register short *ino = (short *) pag;
75 for (i = 1; i < ino[0]; i += 2) {
76 printf("\t[%d]: ", ino[i]);
77 for (n = ino[i]; n < off; n++)
81 printf("[%d]: ", ino[i + 1]);
82 for (n = ino[i + 1]; n < off; n++)
94 register short *ino = (short *) pag;
97 for (i = 1; i < ino[0]; i += 2) {
98 for (n = ino[i]; n < off; n++)
103 for (n = ino[i + 1]; n < off; n++)