]> git.saurik.com Git - apple/libc.git/blob - string/FreeBSD/strcasestr.c.patch
Libc-498.1.7.tar.gz
[apple/libc.git] / string / FreeBSD / strcasestr.c.patch
1 --- strcasestr.c.orig 2003-05-20 15:23:54.000000000 -0700
2 +++ strcasestr.c 2005-02-18 18:48:55.000000000 -0800
3 @@ -37,6 +37,8 @@
4 #include <sys/cdefs.h>
5 __FBSDID("$FreeBSD: src/lib/libc/string/strcasestr.c,v 1.3 2002/03/21 18:44:54 obrien Exp $");
6
7 +#include "xlocale_private.h"
8 +
9 #include <ctype.h>
10 #include <string.h>
11
12 @@ -44,22 +46,31 @@
13 * Find the first occurrence of find in s, ignore case.
14 */
15 char *
16 -strcasestr(s, find)
17 +strcasestr_l(s, find, loc)
18 const char *s, *find;
19 + locale_t loc;
20 {
21 char c, sc;
22 size_t len;
23
24 + NORMALIZE_LOCALE(loc);
25 if ((c = *find++) != 0) {
26 - c = tolower((unsigned char)c);
27 + c = tolower_l((unsigned char)c, loc);
28 len = strlen(find);
29 do {
30 do {
31 if ((sc = *s++) == 0)
32 return (NULL);
33 - } while ((char)tolower((unsigned char)sc) != c);
34 - } while (strncasecmp(s, find, len) != 0);
35 + } while ((char)tolower_l((unsigned char)sc, loc) != c);
36 + } while (strncasecmp_l(s, find, len, loc) != 0);
37 s--;
38 }
39 return ((char *)s);
40 }
41 +
42 +char *
43 +strcasestr(s, find)
44 + const char *s, *find;
45 +{
46 + return strcasestr_l(s, find, __current_locale());
47 +}