Re: [PATCH] [perl #29612] ndbm failure in make test
[p5sagit/p5-mst-13.2.git] / ext / SDBM_File / sdbm / pair.c
index a02c73f..4f0fde2 100644 (file)
@@ -7,11 +7,12 @@
  * page-level routines
  */
 
-#ifndef lint
-static char rcsid[] = "$Id: pair.c,v 1.10 90/12/13 13:00:35 oz Exp $";
-#endif
-
 #include "config.h"
+#ifdef __CYGWIN__
+# define EXTCONST extern const
+#else
+# include "EXTERN.h"
+#endif
 #include "sdbm.h"
 #include "tune.h"
 #include "pair.h"
@@ -44,9 +45,7 @@ static int seepair proto((char *, int, char *, int));
  */
 
 int
-fitpair(pag, need)
-char *pag;
-int need;
+fitpair(char *pag, int need)
 {
        register int n;
        register int off;
@@ -63,10 +62,7 @@ int need;
 }
 
 void
-putpair(pag, key, val)
-char *pag;
-datum key;
-datum val;
+putpair(char *pag, datum key, datum val)
 {
        register int n;
        register int off;
@@ -92,9 +88,7 @@ datum val;
 }
 
 datum
-getpair(pag, key)
-char *pag;
-datum key;
+getpair(char *pag, datum key)
 {
        register int i;
        register int n;
@@ -112,11 +106,20 @@ datum key;
        return val;
 }
 
+int
+exipair(char *pag, datum key)
+{
+       register short *ino = (short *) pag;
+
+       if (ino[0] == 0)
+               return 0;
+
+       return (seepair(pag, ino[0], key.dptr, key.dsize) != 0);
+}
+
 #ifdef SEEDUPS
 int
-duppair(pag, key)
-char *pag;
-datum key;
+duppair(char *pag, datum key)
 {
        register short *ino = (short *) pag;
        return ino[0] > 0 && seepair(pag, ino[0], key.dptr, key.dsize) > 0;
@@ -124,9 +127,7 @@ datum key;
 #endif
 
 datum
-getnkey(pag, num)
-char *pag;
-int num;
+getnkey(char *pag, int num)
 {
        datum key;
        register int off;
@@ -145,9 +146,7 @@ int num;
 }
 
 int
-delpair(pag, key)
-char *pag;
-datum key;
+delpair(char *pag, datum key)
 {
        register int n;
        register int i;
@@ -219,11 +218,7 @@ datum key;
  * return 0 if not found.
  */
 static int
-seepair(pag, n, key, siz)
-char *pag;
-register int n;
-register char *key;
-register int siz;
+seepair(char *pag, register int n, register char *key, register int siz)
 {
        register int i;
        register int off = PBLKSIZ;
@@ -231,7 +226,7 @@ register int siz;
 
        for (i = 1; i < n; i += 2) {
                if (siz == off - ino[i] &&
-                   memcmp(key, pag + ino[i], siz) == 0)
+                   memEQ(key, pag + ino[i], siz))
                        return i;
                off = ino[i + 1];
        }
@@ -239,10 +234,7 @@ register int siz;
 }
 
 void
-splpage(pag, new, sbit)
-char *pag;
-char *new;
-long sbit;
+splpage(char *pag, char *New, long int sbit)
 {
        datum key;
        datum val;
@@ -254,7 +246,7 @@ long sbit;
 
        (void) memcpy(cur, pag, PBLKSIZ);
        (void) memset(pag, 0, PBLKSIZ);
-       (void) memset(new, 0, PBLKSIZ);
+       (void) memset(New, 0, PBLKSIZ);
 
        n = ino[0];
        for (ino++; n > 0; ino += 2) {
@@ -265,14 +257,14 @@ long sbit;
 /*
  * select the page pointer (by looking at sbit) and insert
  */
-               (void) putpair((exhash(key) & sbit) ? new : pag, key, val);
+               (void) putpair((exhash(key) & sbit) ? New : pag, key, val);
 
                off = ino[1];
                n -= 2;
        }
 
        debug(("%d split %d/%d\n", ((short *) cur)[0] / 2, 
-              ((short *) new)[0] / 2,
+              ((short *) New)[0] / 2,
               ((short *) pag)[0] / 2));
 }
 
@@ -283,8 +275,7 @@ long sbit;
  * this could be made more rigorous.
  */
 int
-chkpage(pag)
-char *pag;
+chkpage(char *pag)
 {
        register int n;
        register int off;