X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fconfig.c;h=1b612e8aab48b8a01c0e21ac830d43001007535b;hb=fb2d3926ce4714b83f76c059a18a0d67d12b8019;hp=70a5a6375fd80a2ec5e1f84b364f30289ff7b293;hpb=8eb455e7b2f2b7d52a59fbab82d31468766ebea9;p=openldap diff --git a/servers/slapd/config.c b/servers/slapd/config.c index 70a5a6375f..1b612e8aab 100644 --- a/servers/slapd/config.c +++ b/servers/slapd/config.c @@ -36,7 +36,14 @@ #include #include + +#ifndef S_ISREG +#define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG) +#endif + +#if HAVE_UNISTD_H #include +#endif #include "slap.h" #ifdef LDAP_SLAPI @@ -471,49 +478,18 @@ config_get_vals(ConfigTable *cf, ConfigArgs *c) int init_config_attrs(ConfigTable *ct) { - LDAPAttributeType *at; int i, code; - const char *err; for (i=0; ct[i].name; i++ ) { - int freeit = 0; - if ( !ct[i].attribute ) continue; - at = ldap_str2attributetype( ct[i].attribute, - &code, &err, LDAP_SCHEMA_ALLOW_ALL ); - if ( !at ) { - fprintf( stderr, "init_config_attrs: AttributeType \"%s\": %s, %s\n", - ct[i].attribute, ldap_scherr2str(code), err ); - return code; - } - - code = at_add( at, 0, NULL, &err ); - if ( code ) { - if ( code == SLAP_SCHERR_ATTR_DUP ) { - freeit = 1; - - } else { - ldap_attributetype_free( at ); - fprintf( stderr, "init_config_attrs: AttributeType \"%s\": %s, %s\n", - ct[i].attribute, scherr2str(code), err ); - return code; - } - } - code = slap_str2ad( at->at_names[0], &ct[i].ad, &err ); - if ( freeit || code ) { - ldap_attributetype_free( at ); - } else { - ldap_memfree( at ); - } + code = register_at( ct[i].attribute, &ct[i].ad, 1 ); if ( code ) { - fprintf( stderr, "init_config_attrs: AttributeType \"%s\": %s\n", - ct[i].attribute, err ); + fprintf( stderr, "init_config_attrs: register_at failed\n" ); return code; - } else { + } #ifndef LDAP_DEVEL - ct[i].ad->ad_type->sat_flags |= SLAP_AT_HIDE; + ct[i].ad->ad_type->sat_flags |= SLAP_AT_HIDE; #endif - } } return 0; @@ -521,36 +497,17 @@ init_config_attrs(ConfigTable *ct) { int init_config_ocs( ConfigOCs *ocs ) { - int i; + int i, code; for (i=0;ocs[i].co_def;i++) { - LDAPObjectClass *oc; - int code; - const char *err; - - oc = ldap_str2objectclass( ocs[i].co_def, &code, &err, - LDAP_SCHEMA_ALLOW_ALL ); - if ( !oc ) { - fprintf( stderr, "init_config_ocs: objectclass \"%s\": %s, %s\n", - ocs[i].co_def, ldap_scherr2str(code), err ); - return code; - } - code = oc_add(oc,0,NULL,&err); - if ( code && code != SLAP_SCHERR_CLASS_DUP ) { - fprintf( stderr, "init_config_ocs: objectclass \"%s\": %s, %s\n", - ocs[i].co_def, scherr2str(code), err ); - ldap_objectclass_free(oc); + code = register_oc( ocs[i].co_def, &ocs[i].co_oc, 1 ); + if ( code ) { + fprintf( stderr, "init_config_ocs: register_oc failed\n" ); return code; } - ocs[i].co_oc = oc_find(oc->oc_names[0]); - if ( code ) { - ldap_objectclass_free(oc); - } else { - ldap_memfree(oc); #ifndef LDAP_DEVEL - ocs[i].co_oc->soc_flags |= SLAP_OC_HIDE; + ocs[i].co_oc->soc_flags |= SLAP_OC_HIDE; #endif - } } return 0; }