From: Kurt Zeilenga Date: Fri, 14 Mar 2003 02:16:49 +0000 (+0000) Subject: Update BDB_SUBDIRS code X-Git-Tag: OPENLDAP_REL_ENG_2_1_16~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1e29d51b4bf0c2a546d522393b9d4451d8744539;p=thirdparty%2Fopenldap.git Update BDB_SUBDIRS code (which really should be removed as being redundant to DB_CONFIG) --- diff --git a/servers/slapd/back-bdb/back-bdb.h b/servers/slapd/back-bdb/back-bdb.h index 449d0f6d73..f3df2ae082 100644 --- a/servers/slapd/back-bdb/back-bdb.h +++ b/servers/slapd/back-bdb/back-bdb.h @@ -31,9 +31,9 @@ LDAP_BEGIN_DECL #define BDB_MAX_ADD_LOOP 30 #ifdef BDB_SUBDIRS -#define BDB_TMP_SUBDIR LDAP_DIRSEP "tmp" -#define BDB_LG_SUBDIR LDAP_DIRSEP "log" -#define BDB_DATA_SUBDIR LDAP_DIRSEP "data" +#define BDB_TMP_SUBDIR "tmp" +#define BDB_LG_SUBDIR "log" +#define BDB_DATA_SUBDIR "data" #endif #define BDB_SUFFIX ".bdb" diff --git a/servers/slapd/back-bdb/init.c b/servers/slapd/back-bdb/init.c index db9d00f914..7d6dae13f0 100644 --- a/servers/slapd/back-bdb/init.c +++ b/servers/slapd/back-bdb/init.c @@ -208,12 +208,27 @@ bdb_db_open( BackendDB *be ) #ifdef BDB_SUBDIRS { - char dir[MAXPATHLEN]; - size_t len = strlen( bdb->bi_dbenv_home ); - - strcpy( dir, bdb->bi_dbenv_home ); - strcat( &dir[len], BDB_TMP_SUBDIR ); + char dir[MAXPATHLEN], *ptr; + if (bdb->bi_dbenv_home[0] == '.') { + /* If home is a relative path, relative subdirs + * are just concat'd by BDB. We don't want the + * path to be concat'd twice, e.g. + * ./test-db/./test-db/tmp + */ + ptr = dir; + } else { + ptr = lutil_strcopy( dir, bdb->bi_dbenv_home ); + *ptr++ = LDAP_DIRSEP[0]; +#ifdef HAVE_EBCDIC + __atoe( dir ); +#endif + } + + strcpy( ptr, BDB_TMP_SUBDIR ); +#ifdef HAVE_EBCDIC + __atoe( ptr ); +#endif rc = bdb->bi_dbenv->set_tmp_dir( bdb->bi_dbenv, dir ); if( rc != 0 ) { #ifdef NEW_LOGGING @@ -228,8 +243,10 @@ bdb_db_open( BackendDB *be ) return rc; } - strcat( &dir[len], BDB_LG_SUBDIR ); - + strcpy( ptr, BDB_LG_SUBDIR ); +#ifdef HAVE_EBCDIC + __atoe( ptr ); +#endif rc = bdb->bi_dbenv->set_lg_dir( bdb->bi_dbenv, dir ); if( rc != 0 ) { #ifdef NEW_LOGGING @@ -244,8 +261,10 @@ bdb_db_open( BackendDB *be ) return rc; } - strcat( &dir[len], BDB_DATA_SUBDIR ); - + strcpy( ptr, BDB_DATA_SUBDIR ); +#ifdef HAVE_EBCDIC + __atoe( ptr ); +#endif rc = bdb->bi_dbenv->set_data_dir( bdb->bi_dbenv, dir ); if( rc != 0 ) { #ifdef NEW_LOGGING