From 52ebc531ce68b369594267a716e93f53720c8f1b Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Wed, 9 May 2007 02:01:53 +0000 Subject: Fix Savannah bug #19656: rationalize our use of case-insensitive string comparison functions to always use POSIX strcasecmp(). For non-POSIX systems that use other functions (strcmpi or stricmp) use a macro to alias strcasecmp to those. If we can't find any of them (VMS, plus whatever UNIX doesn't have them) then define our own version in misc.c. --- misc.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'misc.c') diff --git a/misc.c b/misc.c index df54163..a63bbfd 100644 --- a/misc.c +++ b/misc.c @@ -556,6 +556,33 @@ free_ns_chain (struct nameseq *ns) } } + +#if !HAVE_STRCASECMP && !HAVE_STRICMP && !HAVE_STRCMPI + +/* If we don't have strcasecmp() (from POSIX), or anything that can substitute + for it, define our own version. */ + +int +strcasecmp (const char *s1, const char *s2) +{ + while (1) + { + int c1 = (int) *(s1++); + int c2 = (int) *(s2++); + + if (isalpha (c1)) + c1 = tolower (c1); + if (isalpha (c2)) + c2 = tolower (c2); + + if (c1 != '\0' && c1 == c2) + continue; + + return (c1 - c2); + } +} +#endif + #ifdef GETLOADAVG_PRIVILEGED #ifdef POSIX -- cgit v1.2.3