From 5d8b65deb1e20035666a67e79692b92fa933870a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Julio=20S=C3=A1nchez=20Fern=C3=A1ndez?= Date: Thu, 17 Jun 1999 16:10:38 +0000 Subject: [PATCH] Have the normalize routines process white space in the required way. Code untested, but it is not used yet. --- servers/slapd/schema.c | 52 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/servers/slapd/schema.c b/servers/slapd/schema.c index 64640852bd..829e4f6396 100644 --- a/servers/slapd/schema.c +++ b/servers/slapd/schema.c @@ -663,8 +663,32 @@ case_exact_normalize( ) { struct berval *newval; + char *p, *q; newval = ber_bvdup( val ); + p = q = newval->bv_val; + /* Ignore initial whitespace */ + while ( isspace( *p++ ) ) + ; + while ( *p ) { + if ( isspace( *p ) ) { + *q++ = *p++; + /* Ignore the extra whitespace */ + while ( isspace(*p++) ) + ; + } else { + *q++ = *p++; + } + } + /* + * If the string ended in space, backup the pointer one + * position. One is enough because the above loop collapsed + * all whitespace to a single space. + */ + if ( p != newval->bv_val && isspace( *(p-1) ) ) { + *(q-1) = '\0'; + } + newval->bv_len = strlen( newval->bv_val ); normalized = &newval; return 0; @@ -679,19 +703,39 @@ case_exact_compare( return strcmp( val1->bv_val, val2->bv_val ); } -static int +int case_ignore_normalize( struct berval *val, struct berval **normalized ) { struct berval *newval; - char *p; + char *p, *q; newval = ber_bvdup( val ); - for ( p = newval->bv_val; *p; p++ ) { - *p = TOUPPER( *p ); + p = q = newval->bv_val; + /* Ignore initial whitespace */ + while ( isspace( *p++ ) ) + ; + while ( *p ) { + if ( isspace( *p ) ) { + *q++ = *p++; + /* Ignore the extra whitespace */ + while ( isspace(*p++) ) + ; + } else { + *q++ = TOUPPER( *p++ ); + } + } + /* + * If the string ended in space, backup the pointer one + * position. One is enough because the above loop collapsed + * all whitespace to a single space. + */ + if ( p != newval->bv_val && isspace( *(p-1) ) ) { + *(q-1) = '\0'; } + newval->bv_len = strlen( newval->bv_val ); normalized = &newval; return 0; -- 2.39.5