X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-ldbm%2Fconfig.c;h=527f3c4c43874ae1425a8a00e692f0901cb7b538;hb=4d36fd5a3ed407b0a53004d1431f1669222138b4;hp=428792378fc9bc4d50b6c6cd54c4532652bb5c6c;hpb=11b6d1f2841ec7d24a12588d365430816ac89a99;p=openldap diff --git a/servers/slapd/back-ldbm/config.c b/servers/slapd/back-ldbm/config.c index 428792378f..527f3c4c43 100644 --- a/servers/slapd/back-ldbm/config.c +++ b/servers/slapd/back-ldbm/config.c @@ -1,7 +1,7 @@ /* config.c - ldbm backend configuration file routine */ /* $OpenLDAP$ */ /* - * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. + * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ @@ -15,48 +15,6 @@ #include "slap.h" #include "back-ldbm.h" - -int -ldbm_back_config( - BackendInfo *bi, - const char *fname, - int lineno, - int argc, - char **argv -) -{ - 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 \" 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, @@ -143,6 +101,93 @@ ldbm_back_db_config( { li->li_dbwritesync = 0; + /* run sync thread */ + } else if ( strcasecmp( argv[0], "dbsync" ) == 0 ) { +#ifndef NO_THREADS + int i; + if ( argc < 2 ) { +#ifdef NEW_LOGGING + LDAP_LOG ( CONFIG, ERR, "ldbm_back_db_config: %s: " + "line %d: missing frequency value in \"dbsync " + "[ [wait-interval]]\" line\n", fname, lineno, 0 ); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: missing frquency value in \"dbsync [ [wait-interval]]\" line\n", + fname, lineno, 0 ); +#endif + return 1; + } + + i = atoi( argv[1] ); + + if( i < 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG ( CONFIG, ERR, + "ldbm_back_db_config: %s: " + "line %d: frequency value (%d) invalid \"dbsync " + " [ [wait-interval]]\" line\n", + fname, lineno, i ); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: frquency value (%d) invalid \"dbsync [ [wait-interval]]\" line\n", + fname, lineno, i ); +#endif + return 1; + } + + li->li_dbsyncfreq = i; + + if ( argc > 2 ) { + i = atoi( argv[2] ); + if ( i < 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG ( CONFIG,ERR, "ldbm_back_db_config: %s: " + "line %d: frequency value (%d) invalid \"dbsync " + " [ [wait-interval]]\" line\n", + fname, lineno, i ); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: frquency value (%d) invalid \"dbsync [ [wait-interval]]\" line\n", + fname, lineno, i ); +#endif + return 1; + } + li ->li_dbsyncwaitn = i; + } + + if ( argc > 3 ) { + i = atoi( argv[3] ); + if ( i <= 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG ( CONFIG,ERR, "ldbm_back_db_config: %s: " + "line %d: frequency value (%d) invalid \"dbsync " + " [ [wait-interval]]\" line\n", + fname, lineno, i ); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: frquency value (%d) invalid \"dbsync [ [wait-interval]]\" line\n", + fname, lineno, i ); +#endif + return 1; + } + li ->li_dbsyncwaitinterval = i; + } + + /* turn off writesync when sync policy is in place */ + li->li_dbwritesync = 0; + +#else +#ifdef NEW_LOGGING + LDAP_LOG ( CONFIG, ERR, "ldbm_back_db_config: \"dbsync\"" + " policies not supported in non-threaded environments\n", 0, 0, 0 ); +#else + Debug( LDAP_DEBUG_ANY, + "\"dbsync\" policies not supported in non-threaded environments\n", 0, 0, 0); +#endif + return 1; +#endif + + /* anything else */ } else { fprintf( stderr,