]> git.sur5r.net Git - openldap/commitdiff
More parsing fixes
authorHoward Chu <hyc@openldap.org>
Mon, 21 Mar 2005 11:14:37 +0000 (11:14 +0000)
committerHoward Chu <hyc@openldap.org>
Mon, 21 Mar 2005 11:14:37 +0000 (11:14 +0000)
servers/slapd/back-bdb/config.c
servers/slapd/bconfig.c
servers/slapd/config.c

index 118d506cb007296907a2fc00032dbd20a8b93b19..0ddb2d4f0c5bf35fb69d730fcf1d7f725c7f2852 100644 (file)
@@ -89,7 +89,7 @@ static ConfigTable bdbcfg[] = {
                bdb_cf_gen, "( OLcfgAt:1.9 NAME 'dbLockDetect' "
                "DESC 'Deadlock detection algorithm' "
                "SYNTAX OMsDirectoryString )", NULL, NULL },
-       { "mode", "mode", 2, 2, 0, ARG_LONG|ARG_OFFSET,
+       { "mode", "mode", 2, 2, 0, ARG_INT|ARG_OFFSET,
                (void *)offsetof(struct bdb_info, bi_dbenv_mode),
                "( OLcfgAt:1.10 NAME 'dbMode' "
                "DESC 'Unix permissions of database files' "
@@ -98,7 +98,7 @@ static ConfigTable bdbcfg[] = {
                bdb_cf_gen, "( OLcfgAt:1.11 NAME 'dbSearchStack' "
                "DESC 'Depth of search stack in IDLs' "
                "SYNTAX OMsInteger )", NULL, NULL },
-       { "shm_key", "key", 2, 2, 0, ARG_INT|ARG_NONZERO|ARG_OFFSET,
+       { "shm_key", "key", 2, 2, 0, ARG_INT|ARG_OFFSET,
                (void *)offsetof(struct bdb_info, bi_shm_key), 
                "( OLcfgAt:1.12 NAME 'dbShmKey' "
                "DESC 'Key for shared memory region' "
index 98d07819db92e9532d410e59f5ddfc48ec33eb52..3ee0e4fddaa65b33214a659c57dbd592e364b85d 100644 (file)
@@ -78,7 +78,6 @@ typedef struct CfEntryInfo {
 typedef struct {
        ConfigFile *cb_config;
        CfEntryInfo *cb_root;
-       BackendDB       *cb_be; /* config backend */
        BackendDB       cb_db;  /* underlying database */
        int             cb_got_ldif;
 } CfBackInfo;
@@ -621,10 +620,10 @@ static ConfigOCs cf_ocs[] = {
                "NAME 'olcDatabaseConfig' "
                "DESC 'OpenLDAP Database-specific options' "
                "SUP olcConfig STRUCTURAL "
-               "MAY ( olcDatabase $ olcAccess $ olcLastMod $ olcLimits $ "
+               "MAY ( olcDatabase $ olcSuffix $ olcAccess $ olcLastMod $ olcLimits $ "
                 "olcMaxDerefDepth $ olcPlugin $ olcReadOnly $ olcReplica $ "
                 "olcReplogFile $ olcRequires $ olcRestrict $ olcRootDN $ olcRootPW $ "
-                "olcSchemaDN $ olcSecurity $ olcSizeLimit $ olcSuffix $ olcSyncrepl $ "
+                "olcSchemaDN $ olcSecurity $ olcSizeLimit $ olcSyncrepl $ "
                 "olcTimeLimit $ olcUpdateDN $ olcUpdateRef ) )",
                        Cft_Database, &cfOc_database },
        { "( OLcfgOc:6 "
@@ -1370,7 +1369,8 @@ config_suffix(ConfigArgs *c) {
        struct berval pdn, ndn;
        int rc;
 
-       if (c->be == frontendDB) return 1;
+       if (c->be == frontendDB || SLAP_MONITOR(c->be) ||
+               SLAP_CONFIG(c->be)) return 1;
 
        if (c->op == SLAP_CONFIG_EMIT) {
                if (!BER_BVISNULL( &c->be->be_suffix[0] )) {
@@ -3037,7 +3037,7 @@ config_add_internal( CfBackInfo *cfb, Entry *e, SlapReply *rs )
                        goto ok;
                /* FALLTHRU */
        case Cft_Global:
-               ca.be = cfb->cb_be;
+               ca.be = backendDB;
                break;
 
        case Cft_Backend:
@@ -3705,7 +3705,6 @@ config_back_db_init( Backend *be )
 
        cfb = ch_calloc( 1, sizeof(CfBackInfo));
        cfb->cb_config = &cf_prv;
-       cfb->cb_be = be;
        be->be_private = cfb;
 
        ber_dupbv( &be->be_rootdn, &config_rdn );
index e1808dff99102948df459b00c7f00e4b71c73ef0..f516343ac5cbd2a1bf6b0d7a5334472d99ee3bd0 100644 (file)
@@ -233,9 +233,7 @@ int config_check_vals(ConfigTable *Conf, ConfigArgs *c, int check_only ) {
 }
 
 int config_set_vals(ConfigTable *Conf, ConfigArgs *c) {
-       int i, rc, arg_type, iarg;
-       long larg;
-       ber_len_t barg;
+       int i, rc, arg_type;
        void *ptr;
 
        arg_type = Conf->arg_type;
@@ -269,9 +267,9 @@ int config_set_vals(ConfigTable *Conf, ConfigArgs *c) {
        if(arg_type & ARGS_POINTER)
                switch(arg_type & ARGS_POINTER) {
                        case ARG_ON_OFF:
-                       case ARG_INT:           *(int*)ptr = iarg;                      break;
-                       case ARG_LONG:          *(long*)ptr = larg;                     break;
-                       case ARG_BER_LEN_T:     *(ber_len_t*)ptr = barg;                        break;
+                       case ARG_INT:           *(int*)ptr = c->value_int;                      break;
+                       case ARG_LONG:          *(long*)ptr = c->value_long;                    break;
+                       case ARG_BER_LEN_T:     *(ber_len_t*)ptr = c->value_ber_t;                      break;
                        case ARG_STRING: {
                                char *cc = *(char**)ptr;
                                if(cc) {