Loading...
--- strcasestr.c.bsdnew 2009-11-18 18:24:33.000000000 -0800 +++ strcasestr.c 2009-11-18 18:24:33.000000000 -0800 @@ -33,6 +33,8 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD: src/lib/libc/string/strcasestr.c,v 1.5 2009/02/03 17:58:20 danger Exp $"); +#include "xlocale_private.h" + #include <ctype.h> #include <string.h> @@ -40,21 +42,30 @@ __FBSDID("$FreeBSD: src/lib/libc/string/ * Find the first occurrence of find in s, ignore case. */ char * -strcasestr(const char *s, const char *find) +strcasestr_l(s, find, loc) + const char *s, *find; + locale_t loc; { char c, sc; size_t len; + NORMALIZE_LOCALE(loc); if ((c = *find++) != 0) { - c = tolower((unsigned char)c); + c = tolower_l((unsigned char)c, loc); len = strlen(find); do { do { if ((sc = *s++) == 0) return (NULL); - } while ((char)tolower((unsigned char)sc) != c); - } while (strncasecmp(s, find, len) != 0); + } while ((char)tolower_l((unsigned char)sc, loc) != c); + } while (strncasecmp_l(s, find, len, loc) != 0); s--; } return ((char *)s); } + +char * +strcasestr(const char *s, const char *find) +{ + return strcasestr_l(s, find, __current_locale()); +} |