db4.3.dpatch by Matej Vela <vela@debian.org>

Port to Berkeley DB 4.3-4.6.
Index: skksearch-0.0/dic_db.c
===================================================================
--- skksearch-0.0.orig/dic_db.c	2005-11-12 19:49:38.000000000 +0100
+++ skksearch-0.0/dic_db.c	2005-11-12 19:55:03.000000000 +0100
@@ -23,19 +23,21 @@
 
 /* BerkeleyDB environment */
 int env_initialized = 0;
-DB_ENV env;
-void errcall(const char *, char *);
+DB_ENV *env;
+void errcall(const DB_ENV *, const char *, const char *);
 
 
 struct dic *dic_db_open(struct dic *d, char *path) {
+  int ret;
   struct dic_db_internal *internal;
 
   if (!env_initialized) {
-    env.db_errcall = errcall;
-    if ((errno = db_appinit(NULL, NULL, &env, DB_USE_ENVIRON)) != 0) {
-      err(LOG_ERR, "dic_db_open: db_appinit failed\n");
+    if ((ret = db_env_create(&env, 0)) != 0
+	|| (ret = env->open(env, NULL, 0, DB_USE_ENVIRON)) != 0) {
+      err(LOG_ERR, "dic_db_open: %s\n", db_strerror(ret));
       exit(1);
     }
+    env->set_errcall(env, errcall);
     env_initialized = 1;
   }
 
@@ -45,10 +47,10 @@
   }
   memset(internal, 0, sizeof(struct dic_db_internal));
 
-  if ((errno =
-       db_open(path, DB_UNKNOWN, DB_RDONLY, 0, &env, NULL, &(internal->db)))
-      != 0) {
-    err(LOG_ERR, "dic_db_open(%s): %s\n", path, strerror(errno));
+  if ((ret = db_create(&(internal->db), env, 0)) != 0
+      || (ret = internal->db->open(internal->db, NULL, path, NULL,
+				   DB_UNKNOWN, DB_RDONLY, 0)) != 0) {
+    err(LOG_ERR, "dic_db_open(%s): %s\n", path, db_strerror(ret));
     exit(1);
   }
   d->internal = (void *)internal;
@@ -58,6 +60,7 @@
   }
 
 char *dic_db_search(struct dic *d, char *keystr, int keylen) {
+  int ret;
   struct dic_db_internal *internal = (struct dic_db_internal *)(d->internal);
   DB *db = internal->db;
   DBT key;
@@ -71,23 +74,24 @@
   data.ulen = DIC_BUFSIZE - 1;	/* -1 for '\0' */
   data.flags = DB_DBT_USERMEM;
 
-  if ((errno = db->get(db, NULL, &key, &data, 0)) == DB_NOTFOUND) {
+  if ((ret = db->get(db, NULL, &key, &data, 0)) == DB_NOTFOUND) {
     return NULL;
-  } else if (errno == 0) {	/* found */
+  } else if (ret == 0) {	/* found */
     *((char *)(data.data) + data.size) = '\0';
     return (char *)(data.data);
   } else {
     err(LOG_WARNING, "dic_db_search: %s (may be too long entry)\n",
-	strerror(errno));
+	db_strerror(ret));
     return NULL;
   }
 }
 
 
 int dic_db_close(struct dic *d) {
+  int ret;
   DB *db = ((struct dic_db_internal *)(d->internal))->db;
-  if ((errno = db->close(db, 0)) != 0) {
-    err(LOG_ERR, "dic_db_close: %s\n", strerror(errno));
+  if ((ret = db->close(db, 0)) != 0) {
+    err(LOG_ERR, "dic_db_close: %s\n", db_strerror(ret));
     exit(1);
   }
   free(d->internal);
@@ -96,6 +100,6 @@
 }
 
 
-void errcall(const char *foo, char *message) {
+void errcall(const DB_ENV *dbenv, const char *foo, const char *message) {
   err(LOG_ERR, "dic_db: %s\n", message);
 }
