]> git.saurik.com Git - apple/libc.git/blame - gen/FreeBSD/unvis.c.patch
Libc-763.12.tar.gz
[apple/libc.git] / gen / FreeBSD / unvis.c.patch
CommitLineData
1f2f436a
A
1--- unvis.c.orig 2009-11-07 14:51:38.000000000 -0800
2+++ unvis.c 2009-11-07 14:51:40.000000000 -0800
3@@ -33,6 +33,8 @@ static char sccsid[] = "@(#)unvis.c 8.1
3d9156a7 4 #include <sys/cdefs.h>
1f2f436a 5 __FBSDID("$FreeBSD: src/lib/libc/gen/unvis.c,v 1.10 2007/01/09 00:27:56 imp Exp $");
3d9156a7
A
6
7+#include "xlocale_private.h"
8+
9 #include <sys/types.h>
10 #include <ctype.h>
11 #include <vis.h>
1f2f436a 12@@ -60,6 +62,7 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/unv
3d9156a7
A
13 int
14 unvis(char *cp, int c, int *astate, int flag)
15 {
16+ locale_t loc = __current_locale();
17
18 if (flag & UNVIS_END) {
19 if (*astate == S_OCTAL2 || *astate == S_OCTAL3) {
1f2f436a 20@@ -86,8 +89,8 @@ unvis(char *cp, int c, int *astate, int
3d9156a7
A
21
22 case S_START:
23 if (*astate & S_HTTP) {
24- if (ishex(tolower(c))) {
25- *cp = isdigit(c) ? (c - '0') : (tolower(c) - 'a');
26+ if (ishex(tolower_l(c, loc))) {
27+ *cp = isdigit_l(c, loc) ? (c - '0') : (tolower_l(c, loc) - 'a');
28 *astate = S_HEX2;
29 return (0);
30 }
1f2f436a 31@@ -212,8 +215,8 @@ unvis(char *cp, int c, int *astate, int
3d9156a7
A
32 return (UNVIS_VALIDPUSH);
33
34 case S_HEX2: /* second mandatory hex digit */
35- if (ishex(tolower(c))) {
36- *cp = (isdigit(c) ? (*cp << 4) + (c - '0') : (*cp << 4) + (tolower(c) - 'a' + 10));
37+ if (ishex(tolower_l(c, loc))) {
38+ *cp = (isdigit_l(c, loc) ? (*cp << 4) + (c - '0') : (*cp << 4) + (tolower_l(c, loc) - 'a' + 10));
39 }
40 *astate = S_GROUND;
41 return (UNVIS_VALID);