1
0
forked from jengelh/openldap2
openldap2/slapd-bdb-index-config.dif

208 lines
6.2 KiB
Plaintext

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 ));