xref: /openbsd-src/gnu/usr.bin/perl/ext/SDBM_File/util.c (revision 256a93a44f36679bee503f12e49566c2183f6181)
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