Skip to content
Snippets Groups Projects
Commit c0de0686 authored by Kurt Zeilenga's avatar Kurt Zeilenga
Browse files

Add "directory" directive to backend configuration to

set DB_ENV directory
parent 4b76f030
No related branches found
No related tags found
No related merge requests found
......@@ -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"
......
......@@ -16,6 +16,48 @@
#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,
......
......@@ -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 ));
......
......@@ -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;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment