This is patch.2b1d to perl5.002beta1.
[p5sagit/p5-mst-13.2.git] / ext / GDBM_File / GDBM_File.xs
index c6dc484..5567020 100644 (file)
@@ -16,6 +16,7 @@ typedef GDBM_FILE GDBM_File;
 #define gdbm_DELETE(db,key)                    gdbm_delete(db,key)
 #define gdbm_FIRSTKEY(db)                      gdbm_firstkey(db)
 #define gdbm_NEXTKEY(db,key)                   gdbm_nextkey(db,key)
+#define gdbm_EXISTS(db,key)                    gdbm_exists(db,key)
 
 typedef datum gdatum;
 
@@ -29,6 +30,16 @@ char *s;
     return -1;
 }
 
+/* Versions of gdbm prior to 1.7x might not have the gdbm_sync,
+   gdbm_exists, and gdbm_setopt functions.  Apparently Slackware
+   (Linux) 2.1 contains gdbm-1.5 (which dates back to 1991).
+*/
+#ifndef GDBM_FAST
+#define gdbm_exists(db,key) not_here("gdbm_exists")
+#define gdbm_sync(db) (void) not_here("gdbm_sync")
+#define gdbm_setopt(db,optflag,optval,optlen) not_here("gdbm_setopt")
+#endif
+
 static double
 constant(name, arg)
 char *name;
@@ -193,7 +204,7 @@ gdbm_STORE(db, key, value, flags = GDBM_REPLACE)
        if (RETVAL) {
            if (RETVAL < 0 && errno == EPERM)
                croak("No write permission to gdbm file");
-           warn("gdbm store returned %d, errno %d, key \"%.*s\"",
+           croak("gdbm store returned %d, errno %d, key \"%.*s\"",
                        RETVAL,errno,key.dsize,key.dptr);
            /* gdbm_clearerr(db); */
        }
@@ -216,3 +227,20 @@ int
 gdbm_reorganize(db)
        GDBM_File       db
 
+
+void
+gdbm_sync(db)
+       GDBM_File       db
+
+int
+gdbm_exists(db, key)
+       GDBM_File       db
+       datum           key
+
+int
+gdbm_setopt (db, optflag, optval, optlen)
+       GDBM_File       db
+       int             optflag
+       int             &optval
+       int             optlen
+