Index: servers/slapd/back-bdb/attr.c =================================================================== RCS file: /repo/OpenLDAP/pkg/ldap/servers/slapd/back-bdb/attr.c,v retrieving revision 1.39 diff -u -r1.39 attr.c --- servers/slapd/back-bdb/attr.c 26 May 2008 15:38:32 -0000 1.39 +++ servers/slapd/back-bdb/attr.c 23 Sep 2008 13:09:29 -0000 @@ -23,6 +23,7 @@ #include "slap.h" #include "back-bdb.h" +#include "config.h" #include "lutil.h" /* Find the ad, return -1 if not found, @@ -92,7 +93,8 @@ const char *fname, int lineno, int argc, - char **argv ) + char **argv, + struct config_reply_s *c_reply) { int rc = 0; int i; @@ -132,9 +134,14 @@ rc = slap_str2index( indexes[i], &index ); if( rc != LDAP_SUCCESS ) { - fprintf( stderr, "%s: line %d: " - "index type \"%s\" undefined\n", - fname, lineno, indexes[i] ); + if ( c_reply ) + { + snprintf(c_reply->msg, sizeof(c_reply->msg), + "index type \"%s\" undefined", indexes[i] ); + + fprintf( stderr, "%s: line %d: %s\n", + fname, lineno, c_reply->msg ); + } rc = LDAP_PARAM_ERROR; goto done; } @@ -144,9 +151,13 @@ } if( !mask ) { - fprintf( stderr, "%s: line %d: " - "no indexes selected\n", - fname, lineno ); + if ( c_reply ) + { + snprintf(c_reply->msg, sizeof(c_reply->msg), + "no indexes selected" ); + fprintf( stderr, "%s: line %d: %s\n", + fname, lineno, c_reply->msg ); + } rc = LDAP_PARAM_ERROR; goto done; } @@ -169,9 +180,14 @@ if ( is_component_reference( attrs[i] ) ) { rc = extract_component_reference( attrs[i], &cr ); if ( rc != LDAP_SUCCESS ) { - fprintf( stderr, "%s: line %d: " - "index component reference\"%s\" undefined\n", - fname, lineno, attrs[i] ); + if ( c_reply ) + { + snprintf(c_reply->msg, sizeof(c_reply->msg), + "index component reference\"%s\" undefined", + attrs[i] ); + fprintf( stderr, "%s: line %d: %s\n", + fname, lineno, c_reply->msg ); + } goto done; } cr->cr_indexmask = mask; @@ -187,16 +203,25 @@ rc = slap_str2ad( attrs[i], &ad, &text ); if( rc != LDAP_SUCCESS ) { - fprintf( stderr, "%s: line %d: " - "index attribute \"%s\" undefined\n", - fname, lineno, attrs[i] ); + if ( c_reply ) + { + snprintf(c_reply->msg, sizeof(c_reply->msg), + "index attribute \"%s\" undefined", + attrs[i] ); + + fprintf( stderr, "%s: line %d: %s\n", + fname, lineno, c_reply->msg ); + } goto done; } if( slap_ad_is_binary( ad ) ) { - fprintf( stderr, "%s: line %d: " - "index of attribute \"%s\" disallowed\n", - fname, lineno, attrs[i] ); + if (c_reply) { + snprintf(c_reply->msg, sizeof(c_reply->msg), + "index of attribute \"%s\" disallowed", attrs[i] ); + fprintf( stderr, "%s: line %d: %s\n", + fname, lineno, c_reply->msg ); + } rc = LDAP_UNWILLING_TO_PERFORM; goto done; } @@ -206,9 +231,12 @@ && ad->ad_type->sat_approx->smr_indexer && ad->ad_type->sat_approx->smr_filter ) ) { - fprintf( stderr, "%s: line %d: " - "approx index of attribute \"%s\" disallowed\n", - fname, lineno, attrs[i] ); + if (c_reply) { + snprintf(c_reply->msg, sizeof(c_reply->msg), + "approx index of attribute \"%s\" disallowed", attrs[i] ); + fprintf( stderr, "%s: line %d: %s\n", + fname, lineno, c_reply->msg ); + } rc = LDAP_INAPPROPRIATE_MATCHING; goto done; } @@ -218,9 +246,12 @@ && ad->ad_type->sat_equality->smr_indexer && ad->ad_type->sat_equality->smr_filter ) ) { - fprintf( stderr, "%s: line %d: " - "equality index of attribute \"%s\" disallowed\n", - fname, lineno, attrs[i] ); + if (c_reply) { + snprintf(c_reply->msg, sizeof(c_reply->msg), + "equality index of attribute \"%s\" disallowed", attrs[i] ); + fprintf( stderr, "%s: line %d: %s\n", + fname, lineno, c_reply->msg ); + } rc = LDAP_INAPPROPRIATE_MATCHING; goto done; } @@ -230,9 +261,12 @@ && ad->ad_type->sat_substr->smr_indexer && ad->ad_type->sat_substr->smr_filter ) ) { - fprintf( stderr, "%s: line %d: " - "substr index of attribute \"%s\" disallowed\n", - fname, lineno, attrs[i] ); + if (c_reply) { + snprintf(c_reply->msg, sizeof(c_reply->msg), + "substr index of attribute \"%s\" disallowed", attrs[i] ); + fprintf( stderr, "%s: line %d: %s\n", + fname, lineno, c_reply->msg ); + } rc = LDAP_INAPPROPRIATE_MATCHING; goto done; } @@ -295,9 +329,13 @@ rc = 0; continue; } - fprintf( stderr, - "%s: line %d: duplicate index definition for attr \"%s\".\n", - fname, lineno, attrs[i] ); + if (c_reply) { + snprintf(c_reply->msg, sizeof(c_reply->msg), + "duplicate index definition for attr \"%s\"", + attrs[i] ); + fprintf( stderr, "%s: line %d: %s\n", + fname, lineno, c_reply->msg ); + } rc = LDAP_PARAM_ERROR; goto done; Index: servers/slapd/back-bdb/config.c =================================================================== RCS file: /repo/OpenLDAP/pkg/ldap/servers/slapd/back-bdb/config.c,v retrieving revision 1.108 diff -u -r1.108 config.c --- servers/slapd/back-bdb/config.c 26 Aug 2008 23:45:35 -0000 1.108 +++ servers/slapd/back-bdb/config.c 23 Sep 2008 13:09:29 -0000 @@ -736,7 +736,7 @@ case BDB_INDEX: rc = bdb_attr_index_config( bdb, c->fname, c->lineno, - c->argc - 1, &c->argv[1] ); + c->argc - 1, &c->argv[1], &c->reply); if( rc != LDAP_SUCCESS ) return 1; if (( bdb->bi_flags & BDB_IS_OPEN ) && !bdb->bi_index_task ) { Index: servers/slapd/back-bdb/proto-bdb.h =================================================================== RCS file: /repo/OpenLDAP/pkg/ldap/servers/slapd/back-bdb/proto-bdb.h,v retrieving revision 1.160 diff -u -r1.160 proto-bdb.h --- servers/slapd/back-bdb/proto-bdb.h 26 Aug 2008 23:45:35 -0000 1.160 +++ servers/slapd/back-bdb/proto-bdb.h 23 Sep 2008 13:09:29 -0000 @@ -49,7 +49,7 @@ int bdb_attr_index_config LDAP_P(( struct bdb_info *bdb, const char *fname, int lineno, - int argc, char **argv )); + int argc, char **argv, struct config_reply_s *cr )); void bdb_attr_index_unparse LDAP_P(( struct bdb_info *bdb, BerVarray *bva )); void bdb_attr_index_destroy LDAP_P(( struct bdb_info *bdb ));