X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fphonetic.c;h=4934cbd31688b07b83e4379cb76575f79aa9171b;hb=fd810bb35ebcae78d9e9393af51873f1b404ee02;hp=485e3718a758a0a728048d767b59d4ed51cfac96;hpb=2a869f5a99f537b246ba8640502e2a86117cb6e8;p=openldap diff --git a/servers/slapd/phonetic.c b/servers/slapd/phonetic.c index 485e3718a7..4934cbd316 100644 --- a/servers/slapd/phonetic.c +++ b/servers/slapd/phonetic.c @@ -1,4 +1,9 @@ /* phonetic.c - routines to do phonetic matching */ +/* $OpenLDAP$ */ +/* + * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. + * COPYING RESTRICTIONS APPLY, see COPYRIGHT file + */ #include "portable.h" @@ -11,15 +16,15 @@ #include "slap.h" -#if !defined(METAPHONE) && !defined(SLAPD_PHONETIC) -#define METAPHONE +#if !defined(SLAPD_METAPHONE) && !defined(SLAPD_PHONETIC) +#define SLAPD_METAPHONE #endif #define iswordbreak(x) (!isascii(x) || isspace((unsigned char) (x)) || \ ispunct((unsigned char) (x)) || \ - isdigit((unsigned char) (x)) || x == '\0') + isdigit((unsigned char) (x)) || (x) == '\0') -char * +static char * first_word( char *s ) { if ( s == NULL ) { @@ -37,7 +42,7 @@ first_word( char *s ) return( s ); } -char * +static char * next_word( char *s ) { if ( s == NULL ) { @@ -59,7 +64,7 @@ next_word( char *s ) return( s ); } -char * +static char * word_dup( char *w ) { char *s, *ret; @@ -69,7 +74,7 @@ word_dup( char *w ) ; /* NULL */ save = *s; *s = '\0'; - ret = strdup( w ); + ret = ch_strdup( w ); *s = save; return( ret ); @@ -87,8 +92,7 @@ phonetic( char *s ) { char code, adjacent, ch; char *p; - char **c; - int i, cmax; + int i; char phoneme[MAXPHONEMELEN + 1]; p = s; @@ -97,11 +101,11 @@ phonetic( char *s ) } adjacent = '0'; - phoneme[0] = TOUPPER(*p); + phoneme[0] = TOUPPER((unsigned char)*p); phoneme[1] = '\0'; for ( i = 0; i < 99 && (! iswordbreak(*p)); p++ ) { - ch = TOUPPER (*p); + ch = TOUPPER ((unsigned char)*p); code = '0'; @@ -154,11 +158,11 @@ phonetic( char *s ) if ( i > 0 ) phoneme[i] = '\0'; - return( strdup( phoneme ) ); + return( ch_strdup( phoneme ) ); } #else -#if defined(METAPHONE) +#if defined(SLAPD_METAPHONE) /* * Metaphone copied from C Gazette, June/July 1991, pp 56-57, @@ -168,7 +172,7 @@ phonetic( char *s ) */ /* Character coding array */ -static char vsvfn[26] = { +static const char vsvfn[26] = { 1, 16, 4, 16, 9, 2, 4, 16, 9, 2, 0, 2, 2, /* A B C D E F G H I J K L M */ 2, 1, 4, 0, 2, 4, 4, 1, 0, 0, 0, 8, 0}; @@ -185,9 +189,8 @@ char * phonetic( char *Word ) { char *n, *n_start, *n_end; /* pointers to string */ - char *metaph, *metaph_end; /* pointers to metaph */ + char *metaph_end; /* pointers to metaph */ char ntrans[40]; /* word with uppercase letters */ - char newm[8];/* new metaph for comparison */ int KSflag; /* state flag for X -> KS */ char buf[MAXPHONEMELEN + 2]; char *Metaph; @@ -199,13 +202,13 @@ phonetic( char *Word ) for (n = ntrans + 4, n_end = ntrans + 35; !iswordbreak( *Word ) && n < n_end; Word++) { - if (isalpha(*Word)) - *n++ = TOUPPER(*Word); + if (isalpha((unsigned char)*Word)) + *n++ = TOUPPER((unsigned char)*Word); } Metaph = buf; *Metaph = '\0'; if (n == ntrans + 4) { - return( strdup( buf ) ); /* Return if null */ + return( ch_strdup( buf ) ); /* Return if null */ } n_end = n; /* Set n_end to end of string */ @@ -426,7 +429,7 @@ phonetic( char *Word ) } *Metaph = 0; /* Null terminate */ - return( strdup( buf ) ); + return( ch_strdup( buf ) ); } #endif /* metaphone */