]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/config.c
ITS#2919 add a user modifiable generalizedTime attribute
[openldap] / servers / slapd / config.c
index b894e5fe0d731307e919e2aca8b12ef1d97f7c6a..da68df480892adc1bc8062f29c8972548e8c9ffc 100644 (file)
@@ -384,14 +384,6 @@ init_config_ocs( ConfigOCs *ocs ) {
        return 0;
 }
 
-int
-read_config(const char *fname, int depth) {
-
-       if ( !backend_db_init( "config" ))
-               return 1;
-       return read_config_file(fname, depth, NULL);
-}
-
 int
 read_config_file(const char *fname, int depth, ConfigArgs *cf)
 {
@@ -557,20 +549,20 @@ badline:
 /* restrictops, allows, disallows, requires, loglevel */
 
 int
-verb_to_mask(ConfigArgs *c, struct verb_mask_list *v, int word) {
-       int j;
-       for(j = 0; v[j].word; j++)
-               if(!strcasecmp(c->argv[word], v[j].word))
+verb_to_mask(const char *word, slap_verbmasks *v) {
+       int i;
+       for(i = 0; !BER_BVISNULL(&v[i].word); i++)
+               if(!strcasecmp(word, v[i].word.bv_val))
                        break;
-       return(j);
+       return(i);
 }
 
 int
-verbs_to_mask(ConfigArgs *c, struct verb_mask_list *v, slap_mask_t *m) {
+verbs_to_mask(int argc, char *argv[], slap_verbmasks *v, slap_mask_t *m) {
        int i, j;
-       for(i = 1; i < c->argc; i++) {
-               j = verb_to_mask(c, v, i);
-               if(!v[j].word) return(1);
+       for(i = 1; i < argc; i++) {
+               j = verb_to_mask(argv[i], v);
+               if(BER_BVISNULL(&v[j].word)) return(1);
                while (!v[j].mask) j--;
                *m |= v[j].mask;
        }
@@ -578,40 +570,40 @@ verbs_to_mask(ConfigArgs *c, struct verb_mask_list *v, slap_mask_t *m) {
 }
 
 int
-mask_to_verbs(ConfigArgs *c, struct verb_mask_list *v, slap_mask_t m) {
+mask_to_verbs(slap_verbmasks *v, slap_mask_t m, BerVarray *bva) {
        int i, j;
        struct berval bv;
 
        if (!m) return 1;
-       for (i=0; v[i].word; i++) {
+       for (i=0; !BER_BVISNULL(&v[i].word); i++) {
                if (!v[i].mask) continue;
                if (( m & v[i].mask ) == v[i].mask ) {
-                       ber_str2bv( v[i].word, 0, 0, &bv );
-                       value_add_one( &c->rvalue_vals, &bv );
+                       value_add_one( bva, &v[i].word );
                }
        }
        return 0;
 }
 
-static struct verb_mask_list tlskey[] = {
-       { "no",         SB_TLS_OFF },
-       { "yes",                SB_TLS_ON },
-       { "critical",   SB_TLS_CRITICAL }
+static slap_verbmasks tlskey[] = {
+       { BER_BVC("no"),                SB_TLS_OFF },
+       { BER_BVC("yes"),               SB_TLS_ON },
+       { BER_BVC("critical"),  SB_TLS_CRITICAL },
+       { BER_BVNULL, 0 }
 };
 
-static struct verb_mask_list methkey[] = {
-       { "simple",     LDAP_AUTH_SIMPLE },
+static slap_verbmasks methkey[] = {
+       { BER_BVC("simple"),    LDAP_AUTH_SIMPLE },
 #ifdef HAVE_CYRUS_SASL
-       { "sasl",       LDAP_AUTH_SASL },
+       { BER_BVC("sasl"),      LDAP_AUTH_SASL },
 #endif
-       { NULL, 0 }
+       { BER_BVNULL, 0 }
 };
 
 typedef struct cf_aux_table {
        struct berval key;
        int off;
        int quote;
-       struct verb_mask_list *aux;
+       slap_verbmasks *aux;
 } cf_aux_table;
 
 static cf_aux_table bindkey[] = {
@@ -627,7 +619,7 @@ static cf_aux_table bindkey[] = {
        { BER_BVNULL, 0, 0, NULL }
 };
 
-int bindconf_parse( char *word, slap_bindconf *bc ) {
+int bindconf_parse( const char *word, slap_bindconf *bc ) {
        int i, rc = 0;
        char **cptr;
        cf_aux_table *tab;
@@ -638,8 +630,8 @@ int bindconf_parse( char *word, slap_bindconf *bc ) {
                        if ( tab->aux ) {
                                int j;
                                rc = 1;
-                               for (j=0; tab->aux[j].word; j++) {
-                                       if (!strcasecmp(word+tab->key.bv_len, tab->aux[j].word)) {
+                               for (j=0; !BER_BVISNULL(&tab->aux[j].word); j++) {
+                                       if (!strcasecmp(word+tab->key.bv_len, tab->aux[j].word.bv_val)) {
                                                int *ptr = (int *)cptr;
                                                *ptr = tab->aux[j].mask;
                                                rc = 0;
@@ -669,11 +661,11 @@ int bindconf_unparse( slap_bindconf *bc, struct berval *bv ) {
                cptr = (char **)((char *)bc + tab->off);
                if ( tab->aux ) {
                        int *ip = (int *)cptr, i;
-                       for ( i=0; tab->aux[i].word; i++ ) {
+                       for ( i=0; !BER_BVISNULL(&tab->aux[i].word); i++ ) {
                                if ( *ip == tab->aux[i].mask ) {
                                        *ptr++ = ' ';
                                        ptr = lutil_strcopy( ptr, tab->key.bv_val );
-                                       ptr = lutil_strcopy( ptr, tab->aux[i].word );
+                                       ptr = lutil_strcopy( ptr, tab->aux[i].word.bv_val );
                                        break;
                                }
                        }