X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fphonetic.c;h=38cd8893aece44aaf5c9f7e33d87049dd900f52b;hb=5747896ba081ff998fd97863de26d2f4af59bbd2;hp=27f3f91e546208639f37a9e079622147bf033cf5;hpb=73db912500316a665638e66e0ff442699b03127b;p=openldap diff --git a/servers/slapd/phonetic.c b/servers/slapd/phonetic.c index 27f3f91e54..38cd8893ae 100644 --- a/servers/slapd/phonetic.c +++ b/servers/slapd/phonetic.c @@ -1,4 +1,28 @@ /* phonetic.c - routines to do phonetic matching */ +/* $OpenLDAP$ */ +/* This work is part of OpenLDAP Software . + * + * Copyright 1998-2006 The OpenLDAP Foundation. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. + * + * A copy of this license is available in the file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . + */ +/* Portions Copyright (c) 1995 Regents of the University of Michigan. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that this notice is preserved and that due credit is given + * to the University of Michigan at Ann Arbor. The name of the University + * may not be used to endorse or promote products derived from this + * software without specific prior written permission. This software + * is provided ``as is'' without express or implied warranty. + */ #include "portable.h" @@ -11,15 +35,16 @@ #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 * +#if 0 +static char * first_word( char *s ) { if ( s == NULL ) { @@ -37,7 +62,7 @@ first_word( char *s ) return( s ); } -char * +static char * next_word( char *s ) { if ( s == NULL ) { @@ -59,7 +84,7 @@ next_word( char *s ) return( s ); } -char * +static char * word_dup( char *w ) { char *s, *ret; @@ -74,6 +99,7 @@ word_dup( char *w ) return( ret ); } +#endif /* 0 */ #ifndef MAXPHONEMELEN #define MAXPHONEMELEN 4 @@ -87,8 +113,7 @@ phonetic( char *s ) { char code, adjacent, ch; char *p; - char **c; - int i, cmax; + int i; char phoneme[MAXPHONEMELEN + 1]; p = s; @@ -157,9 +182,12 @@ phonetic( char *s ) return( ch_strdup( phoneme ) ); } -#else -#if defined(METAPHONE) +#elif defined(SLAPD_METAPHONE) +/* + * Metaphone was originally developed by Lawrence Philips and + * published in the "Computer Language" magazine in 1990. + */ /* * Metaphone copied from C Gazette, June/July 1991, pp 56-57, * author Gary A. Parker, with changes by Bernard Tiffany of the @@ -168,7 +196,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 +213,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; @@ -429,5 +456,4 @@ phonetic( char *Word ) return( ch_strdup( buf ) ); } -#endif /* metaphone */ -#endif /* SLAPD_PHONETIC */ +#endif /* SLAPD_METAPHONE */