X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-ldbm%2Fconfig.c;h=527f3c4c43874ae1425a8a00e692f0901cb7b538;hb=9fc4a749dcecda7176cea4859fa8f51bbc91feff;hp=352bc91561781002b572bfe0831ae64eb20b41a8;hpb=ea069cb7c2731d54d20d41cd49936914ab78edb3;p=openldap diff --git a/servers/slapd/back-ldbm/config.c b/servers/slapd/back-ldbm/config.c index 352bc91561..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,7 +15,6 @@ #include "slap.h" #include "back-ldbm.h" - int ldbm_back_db_config( Backend *be, @@ -68,7 +67,7 @@ ldbm_back_db_config( "%s: line %d: extra junk after \"index [pres,eq,approx,sub]\" line (ignored)\n", fname, lineno ); } - rc = attr_index_config( li, fname, lineno, argc - 1, &argv[1], 0 ); + rc = attr_index_config( li, fname, lineno, argc - 1, &argv[1] ); if( rc != LDAP_SUCCESS ) return 1; @@ -102,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,