Loading...
--- Libc/Libc-498/db/hash/FreeBSD/ndbm.c.patch
+++ /dev/null
@@ -1,62 +0,0 @@
---- ndbm.c.org 2006-09-08 18:47:42.000000000 -0700
-+++ ndbm.c 2006-09-08 18:48:03.000000000 -0700
-@@ -51,6 +51,9 @@
- #include <string.h>
- #include <errno.h>
-
-+#include <db.h>
-+#define _DBM
-+typedef DB DBM;
- #include <ndbm.h>
- #include "hash.h"
-
-@@ -62,7 +65,8 @@
- extern DBM *
- dbm_open(file, flags, mode)
- const char *file;
-- int flags, mode;
-+ int flags;
-+ mode_t mode;
- {
- HASHINFO info;
- char path[MAXPATHLEN];
-@@ -128,10 +132,14 @@
- int status;
- datum retkey;
- DBT dbtretkey, dbtretdata;
-+ HTAB *htab = (HTAB *)(db->internal);
-
- status = (db->seq)(db, &dbtretkey, &dbtretdata, R_FIRST);
-- if (status)
-+ if (status) {
- dbtretkey.data = NULL;
-+ htab->nextkey_eof = 1;
-+ } else
-+ htab->nextkey_eof = 0;
- retkey.dptr = dbtretkey.data;
- retkey.dsize = dbtretkey.size;
- return (retkey);
-@@ -146,13 +154,20 @@
- dbm_nextkey(db)
- DBM *db;
- {
-- int status;
-+ int status = 1;
- datum retkey;
- DBT dbtretkey, dbtretdata;
-+ HTAB *htab = (HTAB *)(db->internal);
-
-- status = (db->seq)(db, &dbtretkey, &dbtretdata, R_NEXT);
-- if (status)
-+ if (htab->nextkey_eof)
- dbtretkey.data = NULL;
-+ else {
-+ status = (db->seq)(db, &dbtretkey, &dbtretdata, R_NEXT);
-+ if (status) {
-+ dbtretkey.data = NULL;
-+ htab->nextkey_eof = 1;
-+ }
-+ }
- retkey.dptr = dbtretkey.data;
- retkey.dsize = dbtretkey.size;
- return (retkey);