]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
Add "directory" directive to backend configuration to
authorKurt Zeilenga <kurt@openldap.org>
Mon, 4 Jun 2001 19:08:38 +0000 (19:08 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Mon, 4 Jun 2001 19:08:38 +0000 (19:08 +0000)
set DB_ENV directory

servers/slapd/back-ldbm/back-ldbm.h
servers/slapd/back-ldbm/config.c
servers/slapd/back-ldbm/external.h
servers/slapd/back-ldbm/init.c

index b1b374b1a76299a00a31962d40c763540e58a616..04ef6c4637fe090c72bbc5d9778bd181b4fb9220 100644 (file)
@@ -119,6 +119,10 @@ struct ldbminfo {
        ldap_pvt_thread_cond_t          li_dbcache_cv;
 };
 
+struct ldbm_backend_info {
+       char    *lbi_directory;
+};
+
 LDAP_END_DECL
 
 #include "proto-back-ldbm.h"
index a6c3e15a5b189af9be5a66d597e9b57fc2d361d1..60c6f4609df15b27f4eb88c58e40791a447e10cd 100644 (file)
 #include "back-ldbm.h"
 
 
+int
+ldbm_back_config(
+    BackendInfo        *bi,
+    const char *fname,
+    int                lineno,
+    int                argc,
+    char       **argv
+)
+{
+       int rc;
+       struct ldbm_backend_info *lbi =
+               (struct ldbm_backend_info *) bi->bi_private;
+
+       if ( lbi == NULL ) {
+               fprintf( stderr, "%s: line %d: ldbm backend info is null!\n",
+                   fname, lineno );
+               return 1;
+       }
+
+       /* directory where database files live */
+       if ( strcasecmp( argv[0], "directory" ) == 0 ) {
+               if ( argc < 2 ) {
+                       fprintf( stderr,
+               "%s: line %d: missing dir in \"directory <dir>\" line\n",
+                           fname, lineno );
+                       return( 1 );
+               }
+               if ( lbi->lbi_directory ) {
+                       free( lbi->lbi_directory );
+               }
+               lbi->lbi_directory = ch_strdup( argv[1] );
+
+       /* anything else */
+       } else {
+               fprintf( stderr,
+"%s: line %d: unknown directive \"%s\" in ldbm backend definition (ignored)\n",
+                   fname, lineno, argv[0] );
+       }
+
+       return 0;
+}
+
 int
 ldbm_back_db_config(
     Backend    *be,
index 2bdac2f06930879149431f0f117a88aa9b576d11..7bb6ec4a6060128e4d090f63e62e5acd3fae8640 100644 (file)
@@ -13,6 +13,9 @@ extern int    ldbm_back_initialize LDAP_P(( BackendInfo *bi ));
 extern int     ldbm_back_open LDAP_P(( BackendInfo *bi ));
 extern int     ldbm_back_close LDAP_P(( BackendInfo *bi ));
 extern int     ldbm_back_destroy LDAP_P(( BackendInfo *bi ));
+extern int     ldbm_back_config LDAP_P(( BackendInfo *bi,
+       const char *fname, int lineno,
+       int argc, char **argv ));
 
 extern int     ldbm_back_db_init LDAP_P(( BackendDB *bd ));
 extern int     ldbm_back_db_open LDAP_P(( BackendDB *bd ));
index e856743e11e80f142bbb6261f3c3ef2fb2ed2de3..10a849a7e37c46deb6039b7f6887616f9439245e 100644 (file)
@@ -43,7 +43,7 @@ ldbm_back_initialize(
        bi->bi_controls = controls;
 
        bi->bi_open = ldbm_back_open;
-       bi->bi_config = 0;
+       bi->bi_config = ldbm_back_config;
        bi->bi_close = ldbm_back_close;
        bi->bi_destroy = ldbm_back_destroy;
 
@@ -85,6 +85,14 @@ ldbm_back_initialize(
        bi->bi_connection_init = 0;
        bi->bi_connection_destroy = 0;
 
+       {
+               struct ldbm_backend_info *lbi = malloc(
+                       sizeof( struct ldbm_backend_info ) );
+
+               bi->bi_private = lbi;
+               lbi->lbi_directory = NULL;
+       }
+
        return 0;
 }
 
@@ -103,9 +111,11 @@ ldbm_back_open(
 {
        int rc;
 
-       /* initialize the underlying database system */
-       rc = ldbm_initialize( NULL );
+       struct ldbm_backend_info *lbi
+               = (struct ldbm_backend_info *) bi->bi_private;
 
+       /* initialize the underlying database system */
+       rc = ldbm_initialize( lbi->lbi_directory );
        return rc;
 }