X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fmr.c;h=316ff13641621edf58ff5d7b8038e12b28e8ecb7;hb=e25f6ef0cdd1780577dffeaca8ba8b19b5697880;hp=34dae23bc0acf6bfe89cd2065e386816d250a1bb;hpb=92c6c9c25dda27b767755e8d4df5e7ba63db78c2;p=openldap diff --git a/servers/slapd/mr.c b/servers/slapd/mr.c index 34dae23bc0..316ff13641 100644 --- a/servers/slapd/mr.c +++ b/servers/slapd/mr.c @@ -1,7 +1,7 @@ /* mr.c - routines to manage matching rule definitions */ /* $OpenLDAP$ */ /* - * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. + * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ @@ -52,7 +52,7 @@ mr_find( const char *mrname ) { struct berval bv; - bv.bv_val = mrname; + bv.bv_val = (char *)mrname; bv.bv_len = strlen( mrname ); return mr_bvfind( &bv ); } @@ -272,30 +272,33 @@ register_matching_rule( int mr_schema_info( Entry *e ) { - struct berval val; - struct berval *vals[2]; + struct berval vals[2]; MatchingRule *mr; AttributeDescription *ad_matchingRules = slap_schema.si_ad_matchingRules; - vals[0] = &val; - vals[1] = NULL; + vals[1].bv_val = NULL; for ( mr = mr_list; mr; mr = mr->smr_next ) { + if ( mr->smr_usage & SLAP_MR_HIDE ) { + /* skip hidden rules */ + continue; + } + if ( ! mr->smr_match ) { /* skip rules without matching functions */ continue; } - if ( ldap_matchingrule2bv( &mr->smr_mrule, &val ) == NULL ) { + if ( ldap_matchingrule2bv( &mr->smr_mrule, vals ) == NULL ) { return -1; } #if 0 Debug( LDAP_DEBUG_TRACE, "Merging mr [%ld] %s\n", - (long) val.bv_len, val.bv_val, 0 ); + (long) vals[0].bv_len, vals[0].bv_val, 0 ); #endif attr_merge( e, ad_matchingRules, vals ); - ldap_memfree( val.bv_val ); + ldap_memfree( vals[0].bv_val ); } return 0; }