diff options
author | Rich Megginson <rmeggins@redhat.com> | 2006-11-15 17:47:58 +0000 |
---|---|---|
committer | Rich Megginson <rmeggins@redhat.com> | 2006-11-15 17:47:58 +0000 |
commit | b40456f95274ec1bb4d6a36f3dbf407a7dac71fd (patch) | |
tree | 59b0efe8c9d150a57472a3fcf949ca544312e9dd /ldap/servers/slapd/back-ldbm/dblayer.c | |
parent | a269b9cabbf0e5fc8a5ff8f8d9becba784879ba0 (diff) | |
download | ds-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.c | 19 |
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 */ |