2 * dba dbm analysis/recovery
25 name = (char *) malloc((n = strlen(p)) + 5);
27 oops("cannot get memory");
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);
53 while ((b = read(pagf, pag, PBLKSIZ)) > 0) {
59 if (!(e = pagestat(pag)))
68 printf("%d pages (%d holes): %d entries\n", n, o, t);
70 oops("read failed: block %d", n);
78 register short *ino = (short *) pag;
81 printf("no entries.\n");
83 free = ino[n] - (n + 1) * sizeof(short);
84 printf("%3d entries %2d%% used free %d.\n",
85 n / 2, ((PBLKSIZ - free) * 100) / PBLKSIZ, free);