]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/phonetic.c
Fix -USLAPD_RLOOKUPS
[openldap] / servers / slapd / phonetic.c
index 959e06e1e332479aeae05f92dcd4d8c2ce8f4f13..f5871ee8b814c1f338f5df4cc023f5e8d0d24b8e 100644 (file)
@@ -1,21 +1,23 @@
 /* phonetic.c - routines to do phonetic matching */
 
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
 #include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/ctype.h>
+#include <ac/string.h>
+#include <ac/socket.h>
+#include <ac/time.h>
+
 #include "slap.h"
 
-#if !defined(METAPHONE) && !defined(SOUNDEX)
+#if !defined(METAPHONE) && !defined(SLAPD_PHONETIC)
 #define 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 *
 first_word( char *s )
@@ -67,7 +69,7 @@ word_dup( char *w )
                ;       /* NULL */
        save = *s;
        *s = '\0';
-       ret = strdup( w );
+       ret = ch_strdup( w );
        *s = save;
 
        return( ret );
@@ -77,7 +79,7 @@ word_dup( char *w )
 #define MAXPHONEMELEN  4
 #endif
 
-#if defined(SOUNDEX)
+#if defined(SLAPD_PHONETIC)
 
 /* lifted from isode-8.0 */
 char *
@@ -85,8 +87,7 @@ phonetic( char *s )
 {
         char   code, adjacent, ch;
        char    *p;
-       char    **c;
-        int    i, cmax;
+        int    i;
        char    phoneme[MAXPHONEMELEN + 1];
 
         p = s;
@@ -95,11 +96,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';
 
@@ -152,7 +153,7 @@ phonetic( char *s )
        if ( i > 0 )
                phoneme[i] = '\0';
 
-        return( strdup( phoneme ) );
+        return( ch_strdup( phoneme ) );
 }
 
 #else
@@ -166,7 +167,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};
@@ -183,9 +184,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;
@@ -197,13 +197,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 */
 
@@ -424,8 +424,8 @@ phonetic( char *Word )
        }
 
        *Metaph = 0;            /* Null terminate */
-       return( strdup( buf ) );
+       return( ch_strdup( buf ) );
 }
 
 #endif /* metaphone */
-#endif /* soundex */
+#endif /* SLAPD_PHONETIC */