Add cast to malloc to calm cc when system headers decalre int malloc()
[p5sagit/p5-mst-13.2.git] / ext / SDBM_File / sdbm / dbd.c
CommitLineData
463ee0b2 1/*
2 * dbd - dump a dbm data file
3 */
4
5#include <stdio.h>
6#include <sys/file.h>
7#include "sdbm.h"
8
9char *progname;
10extern void oops();
11
12
13#define empty(page) (((short *) page)[0] == 0)
14
15int
16main(argc, argv)
17char **argv;
18{
19 int n;
20 char *p;
21 char *name;
22 int pagf;
23
24 progname = argv[0];
25
26 if (p = argv[1]) {
27 name = (char *) malloc((n = strlen(p)) + 5);
28 strcpy(name, p);
29 strcpy(name + n, ".pag");
30
31 if ((pagf = open(name, O_RDONLY)) < 0)
32 oops("cannot open %s.", name);
33
34 sdump(pagf);
35 }
36 else
37 oops("usage: %s dbname", progname);
38 return 0;
39}
40
41sdump(pagf)
42int pagf;
43{
44 register r;
45 register n = 0;
46 register o = 0;
47 char pag[PBLKSIZ];
48
49 while ((r = read(pagf, pag, PBLKSIZ)) > 0) {
50 if (!okpage(pag))
51 fprintf(stderr, "%d: bad page.\n", n);
52 else if (empty(pag))
53 o++;
54 else
55 dispage(pag);
56 n++;
57 }
58
59 if (r == 0)
60 fprintf(stderr, "%d pages (%d holes).\n", n, o);
61 else
62 oops("read failed: block %d", n);
63}
64
65
66#ifdef OLD
67dispage(pag)
68char *pag;
69{
70 register i, n;
71 register off;
72 register short *ino = (short *) pag;
73
74 off = PBLKSIZ;
75 for (i = 1; i < ino[0]; i += 2) {
76 printf("\t[%d]: ", ino[i]);
77 for (n = ino[i]; n < off; n++)
78 putchar(pag[n]);
79 putchar(' ');
80 off = ino[i];
81 printf("[%d]: ", ino[i + 1]);
82 for (n = ino[i + 1]; n < off; n++)
83 putchar(pag[n]);
84 off = ino[i + 1];
85 putchar('\n');
86 }
87}
88#else
89dispage(pag)
90char *pag;
91{
92 register i, n;
93 register off;
94 register short *ino = (short *) pag;
95
96 off = PBLKSIZ;
97 for (i = 1; i < ino[0]; i += 2) {
98 for (n = ino[i]; n < off; n++)
99 if (pag[n] != 0)
100 putchar(pag[n]);
101 putchar('\t');
102 off = ino[i];
103 for (n = ino[i + 1]; n < off; n++)
104 if (pag[n] != 0)
105 putchar(pag[n]);
106 putchar('\n');
107 off = ino[i + 1];
108 }
109}
110#endif