This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Further ANSI changes now builds and passes (most) tests
[perl5.git] / ext / SDBM_File / sdbm / util.c
1 #include <stdio.h>
2 #ifdef SDBM
3 #include "sdbm.h"
4 #else
5 #include "ndbm.h"
6 #endif
7
8 void
9 oops(register char *s1, register char *s2)
10 {
11         extern int errno, sys_nerr;
12         extern char *sys_errlist[];
13         extern char *progname;
14
15         if (progname)
16                 fprintf(stderr, "%s: ", progname);
17         fprintf(stderr, s1, s2);
18         if (errno > 0 && errno < sys_nerr)
19                 fprintf(stderr, " (%s)", sys_errlist[errno]);
20         fprintf(stderr, "\n");
21         exit(1);
22 }
23
24 int
25 okpage(char *pag)
26 {
27         register unsigned n;
28         register off;
29         register short *ino = (short *) pag;
30
31         if ((n = ino[0]) > PBLKSIZ / sizeof(short))
32                 return 0;
33
34         if (!n)
35                 return 1;
36
37         off = PBLKSIZ;
38         for (ino++; n; ino += 2) {
39                 if (ino[0] > off || ino[1] > off ||
40                     ino[1] > ino[0])
41                         return 0;
42                 off = ino[1];
43                 n -= 2;
44         }
45
46         return 1;
47 }