summaryrefslogtreecommitdiffstats
path: root/contrib/perl5/ext/SDBM_File/sdbm/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/perl5/ext/SDBM_File/sdbm/util.c')
-rw-r--r--contrib/perl5/ext/SDBM_File/sdbm/util.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/contrib/perl5/ext/SDBM_File/sdbm/util.c b/contrib/perl5/ext/SDBM_File/sdbm/util.c
new file mode 100644
index 0000000..16bd4ac
--- /dev/null
+++ b/contrib/perl5/ext/SDBM_File/sdbm/util.c
@@ -0,0 +1,47 @@
+#include <stdio.h>
+#ifdef SDBM
+#include "sdbm.h"
+#else
+#include "ndbm.h"
+#endif
+
+void
+oops(register char *s1, register char *s2)
+{
+ extern int errno, sys_nerr;
+ extern char *sys_errlist[];
+ extern char *progname;
+
+ if (progname)
+ fprintf(stderr, "%s: ", progname);
+ fprintf(stderr, s1, s2);
+ if (errno > 0 && errno < sys_nerr)
+ fprintf(stderr, " (%s)", sys_errlist[errno]);
+ fprintf(stderr, "\n");
+ exit(1);
+}
+
+int
+okpage(char *pag)
+{
+ register unsigned n;
+ register off;
+ register short *ino = (short *) pag;
+
+ if ((n = ino[0]) > PBLKSIZ / sizeof(short))
+ return 0;
+
+ if (!n)
+ return 1;
+
+ off = PBLKSIZ;
+ for (ino++; n; ino += 2) {
+ if (ino[0] > off || ino[1] > off ||
+ ino[1] > ino[0])
+ return 0;
+ off = ino[1];
+ n -= 2;
+ }
+
+ return 1;
+}
OpenPOWER on IntegriCloud