/* 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"
#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 ) {
return( s );
}
-char *
+static char *
next_word( char *s )
{
if ( s == NULL ) {
return( s );
}
-char *
+static char *
word_dup( char *w )
{
char *s, *ret;
{
char code, adjacent, ch;
char *p;
- char **c;
- int i, cmax;
+ int i;
char phoneme[MAXPHONEMELEN + 1];
p = 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';
}
#else
-#if defined(METAPHONE)
+#if defined(SLAPD_METAPHONE)
/*
* Metaphone copied from C Gazette, June/July 1991, pp 56-57,
*/
/* 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};
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;
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';