X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fschemaparse.c;h=bf37c50c37af87de0c8aa4537dec5b8489b2992c;hb=dcd5c749144d327a75b031b68a1fca80407551ad;hp=f802f1ad59a541ee2cc774fb9746ca62aa435911;hpb=42bf9937982fc8ca2fbce589c4d576b0d24e02e3;p=openldap diff --git a/servers/slapd/schemaparse.c b/servers/slapd/schemaparse.c index f802f1ad59..bf37c50c37 100644 --- a/servers/slapd/schemaparse.c +++ b/servers/slapd/schemaparse.c @@ -24,6 +24,7 @@ #include "slap.h" #include "ldap_schema.h" +#include "config.h" static void oc_usage(void); static void at_usage(void); @@ -124,28 +125,29 @@ cr_usage( void ) int parse_cr( - const char *fname, - int lineno, - char *line, - char **argv, + struct config_args_s *c, ContentRule **scr ) { LDAPContentRule *cr; int code; const char *err; + char *line = strchr( c->line, '(' ); cr = ldap_str2contentrule( line, &code, &err, LDAP_SCHEMA_ALLOW_ALL ); if ( !cr ) { - fprintf( stderr, "%s: line %d: %s before %s\n", - fname, lineno, ldap_scherr2str(code), err ); + snprintf( c->msg, sizeof( c->msg ), "%s: %s before %s", + c->argv[0], ldap_scherr2str( code ), err ); + Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, + "%s %s\n", c->log, c->msg, 0 ); cr_usage(); return 1; } if ( cr->cr_oid == NULL ) { - fprintf( stderr, - "%s: line %d: Content rule has no OID\n", - fname, lineno ); + snprintf( c->msg, sizeof( c->msg ), "%s: OID is missing", + c->argv[0] ); + Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, + "%s %s\n", c->log, c->msg, 0 ); cr_usage(); code = 1; goto done; @@ -153,8 +155,10 @@ parse_cr( code = cr_add( cr, 1, scr, &err ); if ( code ) { - fprintf( stderr, "%s: line %d: %s: \"%s\"\n", - fname, lineno, scherr2str( code ), err ); + snprintf( c->msg, sizeof( c->msg ), "%s: %s: \"%s\"", + c->argv[0], scherr2str(code), err); + Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, + "%s %s\n", c->log, c->msg, 0 ); code = 1; goto done; } @@ -172,37 +176,41 @@ done:; int parse_oc( - const char *fname, - int lineno, - char *line, - char **argv, - ObjectClass **soc ) + struct config_args_s *c, + ObjectClass **soc, + ObjectClass *prev ) { LDAPObjectClass *oc; int code; const char *err; + char *line = strchr( c->line, '(' ); oc = ldap_str2objectclass(line, &code, &err, LDAP_SCHEMA_ALLOW_ALL ); if ( !oc ) { - fprintf( stderr, "%s: line %d: %s before %s\n", - fname, lineno, ldap_scherr2str( code ), err ); + snprintf( c->msg, sizeof( c->msg ), "%s: %s before %s", + c->argv[0], ldap_scherr2str( code ), err ); + Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, + "%s %s\n", c->log, c->msg, 0 ); oc_usage(); return 1; } if ( oc->oc_oid == NULL ) { - fprintf( stderr, - "%s: line %d: objectclass has no OID\n", - fname, lineno ); + snprintf( c->msg, sizeof( c->msg ), "%s: OID is missing", + c->argv[0] ); + Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, + "%s %s\n", c->log, c->msg, 0 ); oc_usage(); code = 1; goto done; } - code = oc_add( oc, 1, soc, &err ); + code = oc_add( oc, 1, soc, prev, &err ); if ( code ) { - fprintf( stderr, "%s: line %d: %s: \"%s\"\n", - fname, lineno, scherr2str( code ), err ); + snprintf( c->msg, sizeof( c->msg ), "%s: %s: \"%s\"", + c->argv[0], scherr2str(code), err); + Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, + "%s %s\n", c->log, c->msg, 0 ); code = 1; goto done; } @@ -263,28 +271,30 @@ at_usage( void ) int parse_at( - const char *fname, - int lineno, - char *line, - char **argv, - AttributeType **sat ) + struct config_args_s *c, + AttributeType **sat, + AttributeType *prev ) { LDAPAttributeType *at; int code; const char *err; + char *line = strchr( c->line, '(' ); at = ldap_str2attributetype( line, &code, &err, LDAP_SCHEMA_ALLOW_ALL ); if ( !at ) { - fprintf( stderr, "%s: line %d: %s before %s\n", - fname, lineno, ldap_scherr2str(code), err ); + snprintf( c->msg, sizeof( c->msg ), "%s: %s before %s", + c->argv[0], ldap_scherr2str(code), err ); + Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, + "%s %s\n", c->log, c->msg, 0 ); at_usage(); return 1; } if ( at->at_oid == NULL ) { - fprintf( stderr, - "%s: line %d: attributeType has no OID\n", - fname, lineno ); + snprintf( c->msg, sizeof( c->msg ), "%s: OID is missing", + c->argv[0] ); + Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, + "%s %s\n", c->log, c->msg, 0 ); at_usage(); code = 1; goto done; @@ -292,16 +302,20 @@ parse_at( /* operational attributes should be defined internally */ if ( at->at_usage ) { - fprintf( stderr, "%s: line %d: attribute type \"%s\" is operational\n", - fname, lineno, at->at_oid ); + snprintf( c->msg, sizeof( c->msg ), "%s: \"%s\" is operational", + c->argv[0], at->at_oid ); + Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, + "%s %s\n", c->log, c->msg, 0 ); code = 1; goto done; } - code = at_add( at, 1, sat, &err); + code = at_add( at, 1, sat, prev, &err); if ( code ) { - fprintf( stderr, "%s: line %d: %s: \"%s\"\n", - fname, lineno, scherr2str(code), err); + snprintf( c->msg, sizeof( c->msg ), "%s: %s: \"%s\"", + c->argv[0], scherr2str(code), err); + Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, + "%s %s\n", c->log, c->msg, 0 ); code = 1; goto done; }