2 * dba dbm analysis/recovery
25 name = (char *) malloc((n = strlen(p)) + 5);
27 strcpy(name + n, ".pag");
29 if ((pagf = open(name, O_RDONLY)) < 0)
30 oops("cannot open %s.", name);
35 oops("usage: %s dbname", progname);
50 while ((b = read(pagf, pag, PBLKSIZ)) > 0) {
56 if (!(e = pagestat(pag)))
65 printf("%d pages (%d holes): %d entries\n", n, o, t);
67 oops("read failed: block %d", n);
75 register short *ino = (short *) pag;
78 printf("no entries.\n");
80 free = ino[n] - (n + 1) * sizeof(short);
81 printf("%3d entries %2d%% used free %d.\n",
82 n / 2, ((PBLKSIZ - free) * 100) / PBLKSIZ, free);