Loading...
string/FreeBSD/strcasecmp.c.patch /dev/null Libc-763.11
--- /dev/null
+++ Libc/Libc-763.11/string/FreeBSD/strcasecmp.c.patch
@@ -0,0 +1,68 @@
+--- strcasecmp.c.bsdnew	2009-11-18 18:24:33.000000000 -0800
++++ strcasecmp.c	2009-11-18 18:24:33.000000000 -0800
+@@ -33,38 +33,59 @@ static char sccsid[] = "@(#)strcasecmp.c
+ #include <sys/cdefs.h>
+ __FBSDID("$FreeBSD: src/lib/libc/string/strcasecmp.c,v 1.8 2009/02/03 17:58:20 danger Exp $");
+ 
++#include "xlocale_private.h"
++
+ #include <strings.h>
+ #include <ctype.h>
+ 
+ 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());
++}