2 * dba dbm analysis/recovery
14 main(int argc, char **argv)
24 name = (char *) malloc((n = strlen(p)) + 5);
26 oops("cannot get memory");
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);
52 while ((b = read(pagf, pag, PBLKSIZ)) > 0) {
58 if (!(e = pagestat(pag)))
67 printf("%d pages (%d holes): %d entries\n", n, o, t);
69 oops("read failed: block %d", n);
77 register short *ino = (short *) pag;
80 printf("no entries.\n");
82 free = ino[n] - (n + 1) * sizeof(short);
83 printf("%3d entries %2d%% used free %d.\n",
84 n / 2, ((PBLKSIZ - free) * 100) / PBLKSIZ, free);