X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fvalue.c;h=c5564935984c3f9804b92bb37bf6964a09ee6600;hb=00ac49a1fd4edff795faf81ed890774ca0bdbf58;hp=5be4338ed0050f52b6541189c2f15b3898946096;hpb=b76c56ba3f45576b9c418ea9fe7f7b3440052904;p=openldap diff --git a/servers/slapd/value.c b/servers/slapd/value.c index 5be4338ed0..c556493598 100644 --- a/servers/slapd/value.c +++ b/servers/slapd/value.c @@ -1,13 +1,20 @@ /* value.c - routines for dealing with values */ +/* + * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved. + * COPYING RESTRICTIONS APPLY, see COPYRIGHT file + */ #include "portable.h" + #include -#include -#include -#include -#include + +#include +#include +#include +#include + #include -#include "portable.h" + #include "slap.h" int @@ -95,13 +102,11 @@ value_normalize( if ( (syntax & SYNTAX_TEL) && (*s == ' ' || *s == '-') ) { continue; } - *d++ = TOUPPER( *s ); + *d++ = TOUPPER( (unsigned char) *s ); } *d = '\0'; } -#define MIN( a, b ) (a < b ? a : b ) - int value_cmp( struct berval *v1, @@ -111,7 +116,6 @@ value_cmp( ) { int rc; - struct stat st1, st2; if ( normalize & 1 ) { v1 = ber_bvdup( v1 ); @@ -134,53 +138,10 @@ value_cmp( break; case SYNTAX_BIN: - rc = memcmp( v1->bv_val, v2->bv_val, MIN( v1->bv_len, - v2->bv_len ) ); - break; - } - - if ( normalize & 1 ) { - ber_bvfree( v1 ); - } - if ( normalize & 2 ) { - ber_bvfree( v2 ); - } - - return( rc ); -} - -int -value_ncmp( - struct berval *v1, - struct berval *v2, - int syntax, - int len, - int normalize -) -{ - 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): - rc = strncasecmp( v1->bv_val, v2->bv_val, len ); + 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; - - case SYNTAX_CES: - rc = strncmp( v1->bv_val, v2->bv_val, len ); - break; - - case SYNTAX_BIN: - rc = memcmp( v1->bv_val, v2->bv_val, len ); } if ( normalize & 1 ) {