From 9b4c23be3b16777f542bd6ee8764fba7b0047b99 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Julio=20S=C3=A1nchez=20Fern=C3=A1ndez?= Date: Fri, 9 Jul 1999 13:29:26 +0000 Subject: [PATCH] Adapt to use matching rules. --- servers/slapd/value.c | 71 +++++++++---------------------------------- 1 file changed, 14 insertions(+), 57 deletions(-) diff --git a/servers/slapd/value.c b/servers/slapd/value.c index ccabdf06a4..6a60cf19d8 100644 --- a/servers/slapd/value.c +++ b/servers/slapd/value.c @@ -78,73 +78,31 @@ value_add( void value_normalize( - char *s, - int syntax + struct berval *val, + struct berval **nval, + MatchingRule *mr ) { - char *d, *save; - - if ( ! (syntax & SYNTAX_CIS) ) { - return; - } - - if ( syntax & SYNTAX_DN ) { - (void) dn_normalize_case( s ); - return; - } - - save = s; - for ( d = s; *s; s++ ) { - if ( (syntax & SYNTAX_TEL) && (*s == ' ' || *s == '-') ) { - continue; - } - *d++ = TOUPPER( (unsigned char) *s ); + if ( mr && mr->smr_normalize ) { + mr->smr_normalize( val, nval ); + } else { + *nval = ber_bvdup( val ); } - *d = '\0'; } int value_cmp( struct berval *v1, struct berval *v2, - int syntax, - int normalize /* 1 => arg 1; 2 => arg 2; 3 => both */ + MatchingRule *mr ) { int rc; - if ( normalize & 1 ) { - v1 = ber_bvdup( v1 ); - value_normalize( v1->bv_val, syntax ); - } - if ( normalize & 2 ) { - v2 = ber_bvdup( v2 ); - value_normalize( v2->bv_val, syntax ); - } - - switch ( syntax ) { - case SYNTAX_CIS: - case (SYNTAX_CIS | SYNTAX_TEL): - case (SYNTAX_CIS | SYNTAX_DN): - rc = strcasecmp( v1->bv_val, v2->bv_val ); - break; - - case SYNTAX_CES: - rc = strcmp( v1->bv_val, v2->bv_val ); - break; - - case SYNTAX_BIN: - rc = (v1->bv_len == v2->bv_len - ? memcmp( v1->bv_val, v2->bv_val, v1->bv_len ) - : v1->bv_len > v2->bv_len ? 1 : -1); - break; - } - - if ( normalize & 1 ) { - ber_bvfree( v1 ); - } - if ( normalize & 2 ) { - ber_bvfree( v2 ); + if ( mr && mr->smr_compare ) { + rc = mr_smr_compare( v1, v2 ); + } else { + rc = 0; } return( rc ); @@ -154,14 +112,13 @@ int value_find( struct berval **vals, struct berval *v, - int syntax, - int normalize + MatchingRule *mr ) { int i; for ( i = 0; vals[i] != NULL; i++ ) { - if ( value_cmp( vals[i], v, syntax, normalize ) == 0 ) { + if ( value_cmp( vals[i], v, mr ) == 0 ) { return( 0 ); } } -- 2.39.5