summaryrefslogtreecommitdiffstats
path: root/ldap/servers/slapd/back-ldbm/dblayer.c
diff options
context:
space:
mode:
authorRich Megginson <rmeggins@redhat.com>2006-11-15 17:47:58 +0000
committerRich Megginson <rmeggins@redhat.com>2006-11-15 17:47:58 +0000
commitb40456f95274ec1bb4d6a36f3dbf407a7dac71fd (patch)
tree59b0efe8c9d150a57472a3fcf949ca544312e9dd /ldap/servers/slapd/back-ldbm/dblayer.c
parenta269b9cabbf0e5fc8a5ff8f8d9becba784879ba0 (diff)
downloadds-b40456f95274ec1bb4d6a36f3dbf407a7dac71fd.tar.gz
ds-b40456f95274ec1bb4d6a36f3dbf407a7dac71fd.tar.xz
ds-b40456f95274ec1bb4d6a36f3dbf407a7dac71fd.zip
Resolves: bug 214851
Bug Description: integrating db43 into ds70 Reviewed by: nkinder (Thanks!) Fix Description: I took the original diffs posted by Ulf and merged them in with our code which has changed slightly since the diffs were originally generated. I also put #if directives like the following: #if 1000*DB_VERSION_MAJOR + 100*DB_VERSION_MINOR >= 4300 ... db43 features ... #else ... db42 features ... #endif so that we can use both db42 and db43. Platforms tested: RHEL4/FC5 Flag Day: no Doc impact: no
Diffstat (limited to 'ldap/servers/slapd/back-ldbm/dblayer.c')
-rw-r--r--ldap/servers/slapd/back-ldbm/dblayer.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/ldap/servers/slapd/back-ldbm/dblayer.c b/ldap/servers/slapd/back-ldbm/dblayer.c
index ed871791..9b5a3ba1 100644
--- a/ldap/servers/slapd/back-ldbm/dblayer.c
+++ b/ldap/servers/slapd/back-ldbm/dblayer.c
@@ -325,7 +325,12 @@ static void dblayer_reset_env(struct ldbminfo *li)
}
/* Callback function for libdb to spit error info into our log */
+#if 1000*DB_VERSION_MAJOR + 100*DB_VERSION_MINOR >= 4300
+void dblayer_log_print(const DB_ENV *dbenv, const char* prefix,
+ const char *buffer)
+#else
void dblayer_log_print(const char* prefix, char *buffer)
+#endif
{
/* We ignore the prefix since we know who we are anyway */
LDAPDebug(LDAP_DEBUG_ANY,"libdb: %s\n", buffer, 0, 0);
@@ -400,6 +405,16 @@ static int dblayer_seek24_large(int fd, size_t pgsize, db_pgno_t pageno,
return (ret < 0) ? errno : 0;
}
+/* Helper function for large seeks, db4.3 */
+static int dblayer_seek43_large(int fd, off64_t offset, int whence)
+{
+ int ret = 0;
+
+ ret = lseek64(fd, offset, whence);
+
+ return (ret < 0) ? errno : 0;
+}
+
/* helper function for large fstat -- this depends on 'struct stat64' having
* the following members:
* off64_t st_size;
@@ -464,7 +479,11 @@ static int dblayer_override_libdb_functions(DB_ENV *pEnv, dblayer_private *priv)
#endif /* !irix */
db_env_set_func_ioinfo(dblayer_ioinfo_large);
db_env_set_func_exists((int (*)())dblayer_exists_large);
+#if 1000*DB_VERSION_MAJOR + 100*DB_VERSION_MINOR >= 4300
+ db_env_set_func_seek((int (*)())dblayer_seek43_large);
+#else
db_env_set_func_seek((int (*)())dblayer_seek24_large);
+#endif
LDAPDebug(LDAP_DEBUG_TRACE, "Enabled 64-bit files\n", 0, 0, 0);
#endif /* DB_USE_64LFS */