]> git.sur5r.net Git - openldap/commitdiff
Add mr_usable_with_at() routine. Use both in generation
authorKurt Zeilenga <kurt@openldap.org>
Sat, 31 Aug 2002 21:23:45 +0000 (21:23 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Sat, 31 Aug 2002 21:23:45 +0000 (21:23 +0000)
of rule uses, but also in test_filter_mra()

servers/slapd/filterentry.c
servers/slapd/mr.c
servers/slapd/proto-slap.h

index 111e258e61554acf70b6f6a9b0cc7ef880da75a1..01a89c4f45e8945868c3e9fd4f45b2dbcbe59edf 100644 (file)
@@ -270,8 +270,7 @@ static int test_mra_filter(
                        int             rc;
 
                        /* check if matching is appropriate */
-                       if ( strcmp( mra->ma_rule->smr_syntax->ssyn_oid,
-                               a->a_desc->ad_type->sat_syntax->ssyn_oid ) != 0 ) {
+                       if ( !mr_usable_with_at( mra->ma_rule, a->a_desc->ad_type )) {
                                continue;
                        }
 
@@ -346,8 +345,7 @@ static int test_mra_filter(
                                        const char      *text = NULL;
 
                                        /* check if matching is appropriate */
-                                       if ( strcmp( mra->ma_rule->smr_syntax->ssyn_oid,
-                                               ad->ad_type->sat_syntax->ssyn_oid ) != 0 ) {
+                                       if ( !mr_usable_with_at( mra->ma_rule, ad->ad_type )) {
                                                continue;
                                        }
 
index 8a203b9784f6db788c9d4a1b396d90f76dad292e..701c646c18d8962a1013638d9c89f5aa37fb8b48 100644 (file)
@@ -383,21 +383,9 @@ matching_rule_use_init( void )
                at = NULL;
                for ( at_start( &at ); at; at_next( &at ) ) {
                        if( at->sat_flags & SLAP_AT_HIDE ) continue;
-                       if( mr->smr_usage & SLAP_MR_EXT && ( 
-                               mr->smr_syntax == at->sat_syntax ||
-                               mr == at->sat_equality ||
-                               mr == at->sat_approx ) )
-                       {
-                               ldap_charray_add( &applies_oids, at->sat_cname.bv_val );
 
-                       } else if ( mr->smr_compat_syntaxes ) {
-                               int i;
-                               for( i=0; mr->smr_compat_syntaxes[i]; i++ ) {
-                                       if( at->sat_syntax == mr->smr_compat_syntaxes[i] ) {
-                                               ldap_charray_add( &applies_oids, at->sat_cname.bv_val );
-                                               break;
-                                       }
-                               }
+                       if( mr_usable_with_at( mr, at )) {
+                               ldap_charray_add( &applies_oids, at->sat_cname.bv_val );
                        }
                }
 
@@ -437,6 +425,27 @@ matching_rule_use_init( void )
        return( 0 );
 }
 
+int mr_usable_with_at(
+       MatchingRule *mr,
+       AttributeType *at )
+{
+       if( mr->smr_usage & SLAP_MR_EXT && ( 
+               mr->smr_syntax == at->sat_syntax ||
+               mr == at->sat_equality || mr == at->sat_approx ) )
+       {
+               return 1;
+       }
+
+       if ( mr->smr_compat_syntaxes ) {
+               int i;
+               for( i=0; mr->smr_compat_syntaxes[i]; i++ ) {
+                       if( at->sat_syntax == mr->smr_compat_syntaxes[i] ) {
+                               return 1;
+                       }
+               }
+       }
+       return 0;
+}
 
 #if defined( SLAPD_SCHEMA_DN )
 
index b01a223b57439b7ab862f832a8c616e4ee2c8439..fb5e49d36db980ac9b5f7d7e8e7675cc979951dc 100644 (file)
@@ -630,6 +630,9 @@ LDAP_SLAPD_F (int) matching_rule_use_init LDAP_P(( void ));
 LDAP_SLAPD_F (int) mr_schema_info( Entry *e );
 LDAP_SLAPD_F (int) mru_schema_info( Entry *e );
 
+LDAP_SLAPD_F (int) mr_usable_with_at( MatchingRule *mr,
+       AttributeType *at );
+
 /*
  * mra.c
  */