X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/1f2f436a38f7ae2d39a943ad2898d8fed4ed2e58..refs/heads/master:/string/FreeBSD/strcasecmp.c diff --git a/string/FreeBSD/strcasecmp.c b/string/FreeBSD/strcasecmp.c index 2e063bb..8299c16 100644 --- a/string/FreeBSD/strcasecmp.c +++ b/string/FreeBSD/strcasecmp.c @@ -33,38 +33,59 @@ static char sccsid[] = "@(#)strcasecmp.c 8.1 (Berkeley) 6/4/93"; #include __FBSDID("$FreeBSD: src/lib/libc/string/strcasecmp.c,v 1.8 2009/02/03 17:58:20 danger Exp $"); +#include "xlocale_private.h" + #include #include typedef unsigned char u_char; int -strcasecmp(const char *s1, const char *s2) +strcasecmp_l(s1, s2, loc) + const char *s1, *s2; + locale_t loc; { const u_char *us1 = (const u_char *)s1, *us2 = (const u_char *)s2; - while (tolower(*us1) == tolower(*us2++)) + NORMALIZE_LOCALE(loc); + while (tolower_l(*us1, loc) == tolower_l(*us2++, loc)) if (*us1++ == '\0') return (0); - return (tolower(*us1) - tolower(*--us2)); + return (tolower_l(*us1, loc) - tolower_l(*--us2, loc)); } int -strncasecmp(const char *s1, const char *s2, size_t n) +strcasecmp(const char *s1, const char *s2) { + return strcasecmp_l(s1, s2, __current_locale()); +} + +int +strncasecmp_l(s1, s2, n, loc) + const char *s1, *s2; + size_t n; + locale_t loc; +{ + NORMALIZE_LOCALE(loc); if (n != 0) { const u_char *us1 = (const u_char *)s1, *us2 = (const u_char *)s2; do { - if (tolower(*us1) != tolower(*us2++)) - return (tolower(*us1) - tolower(*--us2)); + if (tolower_l(*us1, loc) != tolower_l(*us2++, loc)) + return (tolower_l(*us1, loc) - tolower_l(*--us2, loc)); if (*us1++ == '\0') break; } while (--n != 0); } return (0); } + +int +strncasecmp(const char *s1, const char *s2, size_t n) +{ + return strncasecmp_l(s1, s2, n, __current_locale()); +}