diff options
Diffstat (limited to 'source3/lib')
-rw-r--r-- | source3/lib/util_str.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/source3/lib/util_str.c b/source3/lib/util_str.c index 41c012ba34..822267f5d5 100644 --- a/source3/lib/util_str.c +++ b/source3/lib/util_str.c @@ -302,6 +302,36 @@ BOOL strcsequal(const char *s1,const char *s2) return(strcmp(s1,s2)==0); } +/*************************************************************************** +Do a case-insensitive, whitespace-ignoring string compare. +***************************************************************************/ +int strwicmp(char *psz1, char *psz2) +{ + /* if BOTH strings are NULL, return TRUE, if ONE is NULL return */ + /* appropriate value. */ + if (psz1 == psz2) + return (0); + else if (psz1 == NULL) + return (-1); + else if (psz2 == NULL) + return (1); + + /* sync the strings on first non-whitespace */ + while (1) + { + while (isspace(*psz1)) + psz1++; + while (isspace(*psz2)) + psz2++; + if (toupper(*psz1) != toupper(*psz2) || *psz1 == '\0' + || *psz2 == '\0') + break; + psz1++; + psz2++; + } + return (*psz1 - *psz2); +} + /******************************************************************* convert a string to lower case |