1*b8851fccSafresh1 #include <stdio.h>
2*b8851fccSafresh1 #ifdef SDBM
3*b8851fccSafresh1 #include "sdbm.h"
4*b8851fccSafresh1 #else
5*b8851fccSafresh1 #include "ndbm.h"
6*b8851fccSafresh1 #endif
7*b8851fccSafresh1
8*b8851fccSafresh1 void
oops(char * s1,char * s2)9*b8851fccSafresh1 oops(char *s1, char *s2)
10*b8851fccSafresh1 {
11*b8851fccSafresh1 extern int errno, sys_nerr;
12*b8851fccSafresh1 extern char *sys_errlist[];
13*b8851fccSafresh1 extern char *progname;
14*b8851fccSafresh1
15*b8851fccSafresh1 if (progname)
16*b8851fccSafresh1 fprintf(stderr, "%s: ", progname);
17*b8851fccSafresh1 fprintf(stderr, s1, s2);
18*b8851fccSafresh1 if (errno > 0 && errno < sys_nerr)
19*b8851fccSafresh1 fprintf(stderr, " (%s)", sys_errlist[errno]);
20*b8851fccSafresh1 fprintf(stderr, "\n");
21*b8851fccSafresh1 exit(1);
22*b8851fccSafresh1 }
23*b8851fccSafresh1
24*b8851fccSafresh1 int
okpage(char * pag)25*b8851fccSafresh1 okpage(char *pag)
26*b8851fccSafresh1 {
27*b8851fccSafresh1 unsigned n;
28*b8851fccSafresh1 int off;
29*b8851fccSafresh1 short *ino = (short *) pag;
30*b8851fccSafresh1
31*b8851fccSafresh1 if ((n = ino[0]) > PBLKSIZ / sizeof(short))
32*b8851fccSafresh1 return 0;
33*b8851fccSafresh1
34*b8851fccSafresh1 if (!n)
35*b8851fccSafresh1 return 1;
36*b8851fccSafresh1
37*b8851fccSafresh1 off = PBLKSIZ;
38*b8851fccSafresh1 for (ino++; n; ino += 2) {
39*b8851fccSafresh1 if (ino[0] > off || ino[1] > off ||
40*b8851fccSafresh1 ino[1] > ino[0])
41*b8851fccSafresh1 return 0;
42*b8851fccSafresh1 off = ino[1];
43*b8851fccSafresh1 n -= 2;
44*b8851fccSafresh1 }
45*b8851fccSafresh1
46*b8851fccSafresh1 return 1;
47*b8851fccSafresh1 }
48