]> git.sur5r.net Git - openldap/commitdiff
replace strcasechr with bvcasechr
authorKurt Zeilenga <kurt@openldap.org>
Thu, 17 Jan 2002 00:18:57 +0000 (00:18 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Thu, 17 Jan 2002 00:18:57 +0000 (00:18 +0000)
servers/slapd/schema_init.c

index 0a04ec6d0b72bb2b41b816876ac259473c15e815..ebc41fa68f81f0b92e70456876cf8bda13691626 100644 (file)
 #define caseExactMatchOID                      "2.5.13.5"
 #define caseExactSubstringsMatchOID            "2.5.13.7"
 
-static char *strcasechr( const char *str, int c )
+static char *bvcasechr( struct berval *bv, int c, ber_len_t *len )
 {
-       char *lower = strchr( str, TOLOWER(c) );
-       char *upper = strchr( str, TOUPPER(c) );
-
-       if( lower && upper ) {
-               return lower < upper ? lower : upper;
-       } else if ( lower ) {
-               return lower;
-       } else {
-               return upper;
+       ber_len_t i;
+       int lower = TOLOWER( c );
+       int upper = TOUPPER( c );
+       
+       for( i=0; i < bv->bv_len; i++ ) {
+               if( upper == bv->bv_val[i] || lower == bv->bv_val[i] ) {
+                       *len = i;
+                       return &bv->bv_val[i];
+               }
        }
+
+       return NULL;
 }
 
 static int
@@ -2724,14 +2726,14 @@ retry:
                                continue;
                        }
 
-                       p = strcasechr( left.bv_val, *sub->sa_any[i].bv_val );
+                       p = bvcasechr( &left, *sub->sa_any[i].bv_val, &idx );
 
                        if( p == NULL ) {
                                match = 1;
                                goto done;
                        }
 
-                       idx = p - left.bv_val;
+                       assert( idx < left.bv_len );
                        if( idx >= left.bv_len ) {
                                /* this shouldn't happen */
                                return LDAP_OTHER;