]> arthur.barton.de Git - netatalk.git/commitdiff
MFH:
authorjmarcus <jmarcus>
Sat, 8 Feb 2003 03:16:52 +0000 (03:16 +0000)
committerjmarcus <jmarcus>
Sat, 8 Feb 2003 03:16:52 +0000 (03:16 +0000)
Add BDB 4.1.x support.

NEWS
configure.in
libatalk/cnid/Makefile.am
libatalk/cnid/cnid_add.c
libatalk/cnid/cnid_close.c
libatalk/cnid/cnid_lookup.c
libatalk/cnid/cnid_mangle_add.c
libatalk/cnid/cnid_mangle_get.c
libatalk/cnid/cnid_open.c
macros/db3-check.m4

diff --git a/NEWS b/NEWS
index 88c91567700c160973c26b396770711b6574f123..032e456ce9b72f1d0ce74aaff97dc679972c083e 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,7 @@ Changes in 1.6.1
 ================
 
 * UPD: Improve --enable-fhs. [Olaf Hering]
+* UPD: Add BDB 4.1.x support.
 * FIX: Codepage file maccode.koi8-r is now correctly cleaned.
 * FIX: Fix init script location on SuSE. [Olaf]
 * FIX: Build fixes. [Olaf]
index 4c55d1d1dd0303e39c6ae1bdc9bb2431925acbe4..f6d9b91fd15a617a28250309d5b8b3654b0feddd 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: configure.in,v 1.168.2.4 2003-01-21 16:23:37 srittau Exp $
+dnl $Id: configure.in,v 1.168.2.5 2003-02-08 03:16:52 jmarcus Exp $
 dnl configure.in for netatalk
 
 AC_INIT(bin/adv1tov2/adv1tov2.c)
@@ -208,8 +208,8 @@ AC_ARG_ENABLE(force-uidgid,
        fi
 )
 
-dnl Don't use DB3 unless it's needed
-db3_required=no
+dnl Don't use BDB unless it's needed
+bdb_required=no
 
 dnl Determine DID scheme
 AC_MSG_CHECKING([for DID scheme to use])
@@ -223,7 +223,7 @@ if test "x$did_scheme" = "xlast"; then
        AC_DEFINE(USE_LASTDID, 1)
        AC_MSG_RESULT([last])
 elif test "x$did_scheme" = "xcnid"; then
-       db3_required="yes"
+       bdb_required="yes"
        AC_DEFINE(CNID_DB, 1)
        AC_MSG_RESULT([enabling build with CNID DB support])
 else
@@ -277,9 +277,9 @@ if test "$USE_CDB" = "yes"; then
     AC_DEFINE(CNID_DB_CDB, 1)
 fi
 
-dnl Check for Berkeley DB3 library
-if test "x$db3_required" = "xyes"; then
-       AC_PATH_DB3(, [AC_MSG_ERROR([Berkeley DB3 library not found!])])
+dnl Check for Berkeley DB library
+if test "x$bdb_required" = "xyes"; then
+       AC_PATH_BDB(, [AC_MSG_ERROR([Berkeley DB library not found!])])
 fi
 
 dnl Check for quota support
index 2d04daaaba31bd6405eff157c3943dfdcb0acaf2..c7fabbf5a9abe9e2f20b9baa2098a24ace971d4d 100644 (file)
@@ -1,7 +1,7 @@
 # Makefile.am for libatalk/cnid/
 
-CFLAGS = @CFLAGS@ @DB3_CFLAGS@
-LIBS = @LIBS@ @DB3_LIBS@
+CFLAGS = @CFLAGS@ @BDB_CFLAGS@
+LIBS = @LIBS@ @BDB_LIBS@
 
 noinst_LTLIBRARIES = libcnid.la
 
index 9809167317fb790e1bc73f0c061e33805b828e20..2a11ba1710d37143192bf620bed9747537354eec 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: cnid_add.c,v 1.30.2.1 2003-02-08 03:07:24 jmarcus Exp $
+ * $Id: cnid_add.c,v 1.30.2.2 2003-02-08 03:16:53 jmarcus Exp $
  *
  * Copyright (c) 1999. Adrian Sun (asun@zoology.washington.edu)
  * All Rights Reserved. See COPYRIGHT.
@@ -121,7 +121,7 @@ abort:
     if ((ret = txn_abort(tid)) != 0) {
         return ret;
     }
-#endif /* CNID_DB_CDB */
+#endif    
     return rc;
 }
 
@@ -134,8 +134,7 @@ cnid_t cnid_add(void *CNID, const struct stat *st,
 #ifndef CNID_DB_CDB
     DB_TXN *tid;
 #endif /* CNID_DB_CDB */
-    struct timeval t;
-    cnid_t id, save;
+    cnid_t id;
     int rc;
 
     if (!(db = CNID) || !st || !name) {
@@ -257,7 +256,7 @@ retry:
         if ((rc = txn_abort(tid)) != 0) {
             LOG(log_error, logtype_default, "cnid_add: txn_abort: %s", db_strerror(rc));
             errno = CNID_ERR_DB;
-            return CNID_INVALID; 
+            return CNID_INVALID;
         }
         goto retry;
 #endif /* CNID_DB_CDB */
index 621df818423d31c1d4c4b4d901c71503cd1f0cbb..2552f79541ba772fde391af1b2abbfabe03c1110 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: cnid_close.c,v 1.25 2002-08-30 03:12:52 jmarcus Exp $
+ * $Id: cnid_close.c,v 1.25.2.1 2003-02-08 03:16:53 jmarcus Exp $
  */
 
 #ifdef HAVE_CONFIG_H
@@ -36,28 +36,33 @@ void cnid_close(void *CNID) {
     if ((db->lockfd > -1) && ((db->flags & CNIDFLAG_DB_RO) == 0)) {
         struct flock lock;
 
-        lock.l_type = F_WRLCK;
-        lock.l_whence = SEEK_SET;
-        lock.l_start = lock.l_len = 0;
-        if (fcntl(db->lockfd, F_SETLK, &lock) == 0) {
+    lock.l_type = F_WRLCK;
+    lock.l_whence = SEEK_SET;
+    lock.l_start = lock.l_len = 0;
+    if (fcntl(db->lockfd, F_SETLK, &lock) == 0) {
             char **list, **first;
-            int cfd = -1;
 
 
             /* Checkpoint the databases until we can checkpoint no
              * more. */
 #if DB_VERSION_MAJOR >= 4
+#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1
+            db->dbenv->txn_checkpoint(db->dbenv, 0, 0, 0);
+#else
             rc = db->dbenv->txn_checkpoint(db->dbenv, 0, 0, 0);
+#endif /* DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1 */
 #else
             rc = txn_checkpoint(db->dbenv, 0, 0, 0);
-#endif
+#endif /* DB_VERSION_MAJOR >= 4 */
+#if DB_VERSION_MAJOR < 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR < 1)
             while (rc == DB_INCOMPLETE) {
 #if DB_VERSION_MAJOR >= 4
-                   rc = db->dbenv->txn_checkpoint(db->dbenv, 0, 0, 0);
+                rc = db->dbenv->txn_checkpoint(db->dbenv, 0, 0, 0);
 #else
-                   rc = txn_checkpoint(db->dbenv, 0, 0, 0);
-#endif
+                rc = txn_checkpoint(db->dbenv, 0, 0, 0);
+#endif /* DB_VERSION_MAJOR >= 4 */
             }
+#endif /* DB_VERSION_MAJOR < 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR < 1) */
 
 #if DB_VERSION_MAJOR >= 4
             if ((rc = db->dbenv->log_archive(db->dbenv, &list, DB_ARCH_ABS)) != 0) {
@@ -73,9 +78,9 @@ void cnid_close(void *CNID) {
                 for (first = list; *list != NULL; ++list) {
                     if ((rc = remove(*list)) != 0) {
 #ifdef DEBUG
-                        LOG(log_info, logtype_default, "cnid_close: failed to remove %s: %s", *list, strerror(rc));
+                            LOG(log_info, logtype_default, "cnid_close: failed to remove %s: %s", *list, strerror(rc));
 #endif
-                    }
+                        }
                 }
                 free(first);
             }
index 7a6e3adc397f6c2b36c13a4a4245bedad6fc199f..f061cb4891cf14ebbc2b35d5d5413d632cb14946 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: cnid_lookup.c,v 1.14 2002-08-30 03:12:52 jmarcus Exp $
+ * $Id: cnid_lookup.c,v 1.14.2.1 2003-02-08 03:16:53 jmarcus Exp $
  */
 
 #ifdef HAVE_CONFIG_H
@@ -48,11 +48,14 @@ cnid_t cnid_lookup(void *CNID, const struct stat *st, const cnid_t did,
 #ifdef DEBUG
         LOG(log_info, logtype_default, "cnid_lookup: Running database checkpoint");
 #endif
+#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)
+        db->dbenv->txn_checkpoint(db->dbenv, LOGFILEMAX, CHECKTIMEMAX, 0)
+#else
 #if DB_VERSION_MAJOR >= 4
         switch (rc = db->dbenv->txn_checkpoint(db->dbenv, LOGFILEMAX, CHECKTIMEMAX, 0)) {
 #else
         switch (rc = txn_checkpoint(db->dbenv, LOGFILEMAX, CHECKTIMEMAX, 0)) {
-#endif
+#endif /* DB_VERSION_MAJOR >= 4 */
         case 0:
         case DB_INCOMPLETE:
             break;
@@ -62,83 +65,84 @@ cnid_t cnid_lookup(void *CNID, const struct stat *st, const cnid_t did,
             return 0;
         }
     }
+#endif /* DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1) */
 #endif /* CNID_DB_CDB */
 
-    if ((buf = make_cnid_data(st, did, name, len)) == NULL) {
-        LOG(log_error, logtype_default, "cnid_lookup: Pathname is too long");
-        return 0;
-    }
+        if ((buf = make_cnid_data(st, did, name, len)) == NULL) {
+            LOG(log_error, logtype_default, "cnid_lookup: Pathname is too long");
+            return 0;
+        }
 
-    memset(&key, 0, sizeof(key));
-    memset(&devdata, 0, sizeof(devdata));
-    memset(&diddata, 0, sizeof(diddata));
+        memset(&key, 0, sizeof(key));
+        memset(&devdata, 0, sizeof(devdata));
+        memset(&diddata, 0, sizeof(diddata));
 
-    /* Look for a CNID.  We have two options: dev/ino or did/name.  If we
-     * only get a match in one of them, that means a file has moved. */
-    key.data = buf;
-    key.size = CNID_DEVINO_LEN;
-    while ((rc = db->db_devino->get(db->db_devino, NULL, &key, &devdata, 0))) {
+        /* Look for a CNID.  We have two options: dev/ino or did/name.  If we
+         * only get a match in one of them, that means a file has moved. */
+        key.data = buf;
+        key.size = CNID_DEVINO_LEN;
+        while ((rc = db->db_devino->get(db->db_devino, NULL, &key, &devdata, 0))) {
 #ifndef CNID_DB_CDB
-        if (rc == DB_LOCK_DEADLOCK) {
-            continue;
-        }
+            if (rc == DB_LOCK_DEADLOCK) {
+                continue;
+            }
 #endif /* CNID_DB_CDB */
 
-        if (rc == DB_NOTFOUND) {
-            devino = 0;
-            break;
-        }
+            if (rc == DB_NOTFOUND) {
+                devino = 0;
+                break;
+            }
 
-        LOG(log_error, logtype_default, "cnid_lookup: Unable to get CNID dev %u, ino %u: %s",
-            st->st_dev, st->st_ino, db_strerror(rc));
-        return 0;
-    }
+            LOG(log_error, logtype_default, "cnid_lookup: Unable to get CNID dev %u, ino %u: %s",
+                st->st_dev, st->st_ino, db_strerror(rc));
+            return 0;
+        }
 
-    /* did/name now */
-    key.data = buf + CNID_DEVINO_LEN;
-    key.size = CNID_DID_LEN + len + 1;
-    while ((rc = db->db_didname->get(db->db_didname, NULL, &key, &diddata, 0))) {
+        /* did/name now */
+        key.data = buf + CNID_DEVINO_LEN;
+        key.size = CNID_DID_LEN + len + 1;
+        while ((rc = db->db_didname->get(db->db_didname, NULL, &key, &diddata, 0))) {
 #ifndef CNID_DB_CDB
-        if (rc == DB_LOCK_DEADLOCK) {
-            continue;
-        }
+            if (rc == DB_LOCK_DEADLOCK) {
+                continue;
+            }
 #endif /* CNID_DB_CDB */
 
-        if (rc == DB_NOTFOUND) {
-            didname = 0;
-            break;
-        }
+            if (rc == DB_NOTFOUND) {
+                didname = 0;
+                break;
+            }
 
-        LOG(log_error, logtype_default, "cnid_lookup: Unable to get CNID %u, name %s: %s",
-            ntohl(did), name, db_strerror(rc));
-        return 0;
-    }
+            LOG(log_error, logtype_default, "cnid_lookup: Unable to get CNID %u, name %s: %s",
+                ntohl(did), name, db_strerror(rc));
+            return 0;
+        }
 
-    /* Set id.  Honor did/name over dev/ino as dev/ino isn't necessarily
-     * 1-1. */
-    if (didname) {
-        memcpy(&id, diddata.data, sizeof(id));
-    }
-    else if (devino) {
-        memcpy(&id, devdata.data, sizeof(id));
-    }
+        /* Set id.  Honor did/name over dev/ino as dev/ino isn't necessarily
+         * 1-1. */
+        if (didname) {
+            memcpy(&id, diddata.data, sizeof(id));
+        }
+        else if (devino) {
+            memcpy(&id, devdata.data, sizeof(id));
+        }
 
-    /* Either entries are in both databases or neither of them. */
-    if ((devino && didname) || !(devino || didname)) {
+        /* Either entries are in both databases or neither of them. */
+        if ((devino && didname) || !(devino || didname)) {
 #ifdef DEBUG
-        LOG(log_info, logtype_default, "cnid_lookup: Looked up did %u, name %s, as %u",
-            ntohl(did), name, ntohl(id));
+            LOG(log_info, logtype_default, "cnid_lookup: Looked up did %u, name %s, as %u",
+                ntohl(did), name, ntohl(id));
 #endif
-        return id;
-    }
+            return id;
+        }
 
-    /* Fix up the database. */
-    cnid_update(db, id, st, did, name, len);
+        /* Fix up the database. */
+        cnid_update(db, id, st, did, name, len);
 #ifdef DEBUG
-    LOG(log_info, logtype_default, "cnid_lookup: Looked up did %u, name %s, as %u (needed update)", ntohl(did), name, ntohl(id));
+        LOG(log_info, logtype_default, "cnid_lookup: Looked up did %u, name %s, as %u (needed update)", ntohl(did), name, ntohl(id));
 #endif
-    return id;
-}
+        return id;
+    }
 #endif /* CNID_DB */
 
 
index 80336d0e780a532c02cf3e9b662eae27a5190016..ac91abdf79ca489c9f99245ac89438c1c481f478 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: cnid_mangle_add.c,v 1.4 2002-08-30 03:12:52 jmarcus Exp $
+ * $Id: cnid_mangle_add.c,v 1.4.2.1 2003-02-08 03:16:53 jmarcus Exp $
  */
 
 #ifdef HAVE_CONFIG_H
@@ -67,12 +67,12 @@ retry:
 #endif /* CNID_DB_CDB */
         switch (rc) {
 #ifndef CNID_DB_CDB
-            case DB_LOCK_DEADLOCK:
-                goto retry;
+        case DB_LOCK_DEADLOCK:
+            goto retry;
 #endif /* CNID_DB_CDB */
-            default:
-                LOG(log_error, logtype_default, "cnid_mangle_add: Failed to add mangled filename to the database: %s", db_strerror(rc));
-                return -1;
+        default:
+            LOG(log_error, logtype_default, "cnid_mangle_add: Failed to add mangled filename to the database: %s", db_strerror(rc));
+            return -1;
         }
     }
 
index 2679a26ac83dbd5749f748206af9718b33c0efa7..03137b02a085ec3e623a9df6ecf6799b59d4fbdd 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: cnid_mangle_get.c,v 1.6 2002-08-30 03:12:52 jmarcus Exp $
+ * $Id: cnid_mangle_get.c,v 1.6.2.1 2003-02-08 03:16:53 jmarcus Exp $
  */
 
 #ifdef HAVE_CONFIG_H
@@ -49,12 +49,12 @@ cnid_mangle_get(void *CNID, char *mfilename)
         }
 
         if (rc == DB_NOTFOUND) {
-           LOG(log_debug, logtype_default, "cnid_mangle_get: Failed to find mangled entry for %s", mfilename);
-           return NULL;
+            LOG(log_debug, logtype_default, "cnid_mangle_get: Failed to find mangled entry for %s", mfilename);
+            return NULL;
 
         }
 
-       LOG(log_error, logtype_default, "cnid_mangle_get: Failed to get mangle entry from the database: %s", db_strerror(rc));
+        LOG(log_error, logtype_default, "cnid_mangle_get: Failed to get mangle entry from the database: %s", db_strerror(rc));
         return NULL;
     }
 
index 1c21d124ed4eb8063f9cbecbca1c6a05bb40025c..cd6752ba2895a042b15a3a0aa5274077d9d47043 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: cnid_open.c,v 1.43 2002-08-31 05:35:10 jmarcus Exp $
+ * $Id: cnid_open.c,v 1.43.2.1 2003-02-08 03:16:53 jmarcus Exp $
  *
  * Copyright (c) 1999. Adrian Sun (asun@zoology.washington.edu)
  * All Rights Reserved. See COPYRIGHT.
@@ -33,7 +33,7 @@
  * CNIDs 4-16 are reserved according to page 31 of the AFP 3.0 spec so, 
  * CNID_START begins at 17.
  */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif /* HAVE_CONFIG_H */
@@ -106,7 +106,7 @@ DB_INIT_LOG | DB_INIT_TXN)
 
 #ifndef CNID_DB_CDB
 /* Let's try and use the youngest lock detector if present.
- * If we can't do that, then let DB3 use its default deadlock detector. */
+ * If we can't do that, then let BDB use its default deadlock detector. */
 #if defined DB_LOCK_YOUNGEST
 #define DEAD_LOCK_DETECT DB_LOCK_YOUNGEST
 #else /* DB_LOCK_YOUNGEST */
@@ -193,11 +193,11 @@ static int compare_unicode(const DBT *a, const DBT *b)
 }
 
 void *cnid_open(const char *dir, mode_t mask) {
-    struct stat st, rsb, lsb, csb;
+    struct stat st;
 #ifndef CNID_DB_CDB
     struct flock lock;
 #endif /* CNID_DB_CDB */
-    char path[MAXPATHLEN + 1];
+char path[MAXPATHLEN + 1];
     CNID_private *db;
     DBT key, data;
     DB_TXN *tid;
@@ -328,8 +328,13 @@ void *cnid_open(const char *dir, mode_t mask) {
     }
 
     /*db->db_didname->set_bt_compare(db->db_didname, &compare_unix);*/
+#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)
+    if ((rc = db->db_didname->open(db->db_didname, NULL, DBDIDNAME, NULL,
+                                   DB_HASH, open_flag, 0666 & ~mask))) {
+#else
     if ((rc = db->db_didname->open(db->db_didname, DBDIDNAME, NULL,
                                    DB_HASH, open_flag, 0666 & ~mask))) {
+#endif /* DB_VERSION_MAJOR >= 4 */
         LOG(log_error, logtype_default, "cnid_open: Failed to open did/name database: %s",
             db_strerror(rc));
         goto fail_appinit;
@@ -399,7 +404,7 @@ dbversion_retry:
                 }
                 else if (ret == DB_RUNRECOVERY) {
                     /* At this point, we don't care if the transaction aborts
-                     * successfully or not. */
+                    * successfully or not. */
                     txn_abort(tid);
                     LOG(log_error, logtype_default, "cnid_open: Error putting new version: %s",
                         db_strerror(ret));
@@ -443,7 +448,11 @@ dbversion_retry:
     }
 
     db->db_macname->set_bt_compare(db->db_macname, &compare_mac);
+#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)
+    if ((rc = db->db_macname->open(db->db_macname, NULL, DBMACNAME, NULL, DB_BTREE, open_flag, 0666 & ~mask)) != 0) {
+#else
     if ((rc = db->db_macname->open(db->db_macname, DBMACNAME, NULL, DB_BTREE, open_flag, 0666 & ~mask)) != 0) {
+#endif /* DB_VERSION_MAJOR >= 4 */
         LOG(log_error, logtype_default, "cnid_open: Failed to open did/macname database: %s",
             db_strerror(rc));
         db->db_didname->close(db->db_didname, 0);
@@ -460,7 +469,11 @@ dbversion_retry:
     }
 
     db->db_shortname->set_bt_compare(db->db_shortname, &compare_mac);
+#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)
+    if ((rc = db->db_shortname->open(db->db_shortname, NULL, DBSHORTNAME, NULL, DB_BTREE, open_flag, 0666 & ~mask)) != 0) {
+#else
     if ((rc = db->db_shortname->open(db->db_shortname, DBSHORTNAME, NULL, DB_BTREE, open_flag, 0666 & ~mask)) != 0) {
+#endif /* DB_VERSION_MAJOR >= 4 */
         LOG(log_error, logtype_default, "cnid_open: Failed to open did/shortname database: %s",
             db_strerror(rc));
         db->db_didname->close(db->db_didname, 0);
@@ -479,7 +492,11 @@ dbversion_retry:
     }
 
     db->db_longname->set_bt_compare(db->db_longname, &compare_unicode);
+#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)
+    if ((rc = db->db_longname->open(db->db_longname, NULL, DBLONGNAME, NULL, DB_BTREE, open_flag, 0666 & ~mask)) != 0) {
+#else
     if ((rc = db->db_longname->open(db->db_longname, DBLONGNAME, NULL, DB_BTREE, open_flag, 0666 & ~mask)) != 0) {
+#endif /* DB_VERSION_MAJOR >= 4 */
         LOG(log_error, logtype_default, "cnid_open: Failed to open did/longname database: %s",
             db_strerror(rc));
         db->db_didname->close(db->db_didname, 0);
@@ -502,7 +519,11 @@ dbversion_retry:
         goto fail_appinit;
     }
 
+#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)
+    if ((rc = db->db_devino->open(db->db_devino, NULL, DBDEVINO, NULL, DB_HASH, open_flag, 0666 & ~mask)) != 0) {
+#else
     if ((rc = db->db_devino->open(db->db_devino, DBDEVINO, NULL, DB_HASH, open_flag, 0666 & ~mask)) != 0) {
+#endif /* DB_VERSION_MAJOR >= 4 */
         LOG(log_error, logtype_default, "cnid_open: Failed to open devino database: %s",
             db_strerror(rc));
         db->db_didname->close(db->db_didname, 0);
@@ -529,7 +550,11 @@ dbversion_retry:
     }
 
 
+#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)
+    if ((rc = db->db_cnid->open(db->db_cnid, NULL, DBCNID, NULL, DB_HASH, open_flag, 0666 & ~mask)) != 0) {
+#else
     if ((rc = db->db_cnid->open(db->db_cnid, DBCNID, NULL, DB_HASH, open_flag, 0666 & ~mask)) != 0) {
+#endif /* DB_VERSION_MAJOR >= 4 */
         LOG(log_error, logtype_default, "cnid_open: Failed to open dev/ino database: %s",
             db_strerror(rc));
         db->db_didname->close(db->db_didname, 0);
@@ -557,7 +582,11 @@ dbversion_retry:
         goto fail_appinit;
     }
 
+#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)
+    if ((rc = db->db_mangle->open(db->db_mangle, NULL, DBMANGLE, NULL, DB_HASH, open_flag, 0666 & ~mask)) != 0) {
+#else
     if ((rc = db->db_mangle->open(db->db_mangle, DBMANGLE, NULL, DB_HASH, open_flag, 0666 & ~mask)) != 0) {
+#endif /* DB_VERSION_MAJOR >= 4 */
         LOG(log_error, logtype_default, "cnid_open: Failed to open mangle database: %s", db_strerror(rc));
         db->db_didname->close(db->db_didname, 0);
         db->db_devino->close(db->db_devino, 0);
@@ -571,7 +600,7 @@ dbversion_retry:
     }
 #endif /* FILE_MANGLING */
 
-    /* Print out the version of DB3 we're linked against. */
+    /* Print out the version of BDB we're linked against. */
     LOG(log_info, logtype_default, "CNID DB initialized using %s",
         db_version(NULL, NULL, NULL));
 
index 120fd485cb140f2f8b3ce2b2297ea4f0d18b5e75..06c79fb705fd57c6bd44dbad836b2556d4548b3b 100644 (file)
@@ -1,30 +1,30 @@
-dnl $Id: db3-check.m4,v 1.7 2002-02-07 05:08:36 jmarcus Exp $
-dnl Autoconf macro to check for the Berkeley DB3 library
+dnl $Id: db3-check.m4,v 1.7.4.1 2003-02-08 03:16:53 jmarcus Exp $
+dnl Autoconf macro to check for the Berkeley DB library
 
-AC_DEFUN([AC_PATH_DB3], [
-       trydb3dir=""
-       AC_ARG_WITH(db3,
-               [  --with-db3=PATH         specify path to Berkeley DB3 installation],
+AC_DEFUN([AC_PATH_BDB], [
+       trybdbdir=""
+       AC_ARG_WITH(bdb,
+               [  --with-bdb=PATH         specify path to Berkeley DB installation],
                if test "x$withval" != "xno"; then
-                       trydb3dir="$withval"
+                       trybdbdir="$withval"
                fi
        )
 
-       db3found=no
-       for db3dir in "" "$trydb3dir" "$trydb3dir/include" "$trydb3dir/include/db3" "/usr/local/BerkeleyDB.3.3/include" "/usr/local/include/db3" "/usr/local/include" "/usr/include/db3" "/usr/include" ; do
-               if test -f "$db3dir/db.h" ; then
-                       db3libdir="`echo $db3dir | sed 's/include\/db3$/lib/'`"
-                       db3libdir="`echo $db3libdir | sed 's/include$/lib/'`"
+       bdbfound=no
+       for bdbdir in "" "$trybdbdir" "$trybdbdir/include" "$trybdbdir/include/db3" "/usr/local/BerkeleyDB.3.3/include" "/usr/local/include/db3" "/usr/local/include" "/usr/include/db3" "/usr/include" ; do
+               if test -f "$bdbdir/db.h" ; then
+                       bdblibdir="`echo $bdbdir | sed 's/include\/db3$/lib/'`"
+                       bdblibdir="`echo $bdblibdir | sed 's/include$/lib/'`"
 
                        savedcflags="$CFLAGS"
                        savedldflags="$LDFLAGS"
-                       CFLAGS="$CFLAGS -I$db3dir"
-                       LDFLAGS="-L$db3libdir $LDFLAGS"
+                       CFLAGS="$CFLAGS -I$bdbdir"
+                       LDFLAGS="-L$bdblibdir $LDFLAGS"
                        AC_CHECK_LIB(db, main, [
-                               db3found=yes
-                               DB3_CFLAGS="-I$db3dir"
-                               DB3_LIBS="-L$db3libdir -ldb"
-                               DB3_PATH="`echo $db3dir | sed 's,include/db3$,,'`"
+                               bdbfound=yes
+                               BDB_CFLAGS="-I$bdbdir"
+                               BDB_LIBS="-L$bdblibdir -ldb"
+                               BDB_PATH="`echo $bdbdir | sed 's,include/db3$,,'`"
                        ])
                        CFLAGS="$savedcflags"
                        LDFLAGS="$savedldflags"
@@ -32,13 +32,13 @@ AC_DEFUN([AC_PATH_DB3], [
                fi
        done
 
-       if test "x$db3found" = "xyes"; then
+       if test "x$bdbfound" = "xyes"; then
                ifelse([$1], , :, [$1])
        else
                ifelse([$2], , :, [$2])     
        fi
 
-       AC_SUBST(DB3_CFLAGS)
-       AC_SUBST(DB3_LIBS)
-       AC_SUBST(DB3_PATH)
+       AC_SUBST(BDB_CFLAGS)
+       AC_SUBST(BDB_LIBS)
+       AC_SUBST(BDB_PATH)
 ])