]>
Commit | Line | Data |
---|---|---|
3d9156a7 A |
1 | --- strtol.c.orig 2003-05-20 15:23:25.000000000 -0700 |
2 | +++ strtol.c 2005-02-17 00:43:42.000000000 -0800 | |
3 | @@ -37,6 +37,8 @@ | |
4 | #include <sys/cdefs.h> | |
5 | __FBSDID("$FreeBSD: src/lib/libc/stdlib/strtol.c,v 1.17 2002/09/06 11:23:59 tjr Exp $"); | |
6 | ||
7 | +#include "xlocale_private.h" | |
8 | + | |
9 | #include <limits.h> | |
10 | #include <ctype.h> | |
11 | #include <errno.h> | |
12 | @@ -50,7 +52,8 @@ | |
13 | * alphabets and digits are each contiguous. | |
14 | */ | |
15 | long | |
16 | -strtol(const char * __restrict nptr, char ** __restrict endptr, int base) | |
17 | +strtol_l(const char * __restrict nptr, char ** __restrict endptr, int base, | |
18 | + locale_t loc) | |
19 | { | |
20 | const char *s; | |
21 | unsigned long acc; | |
22 | @@ -58,6 +61,7 @@ | |
23 | unsigned long cutoff; | |
24 | int neg, any, cutlim; | |
25 | ||
26 | + NORMALIZE_LOCALE(loc); | |
27 | /* | |
28 | * Skip white space and pick up leading +/- sign if any. | |
29 | * If base is 0, allow 0x for hex and 0 for octal, else | |
30 | @@ -66,7 +70,7 @@ | |
31 | s = nptr; | |
32 | do { | |
33 | c = *s++; | |
34 | - } while (isspace((unsigned char)c)); | |
35 | + } while (isspace_l((unsigned char)c, loc)); | |
36 | if (c == '-') { | |
37 | neg = 1; | |
38 | c = *s++; | |
39 | @@ -139,3 +143,9 @@ | |
40 | *endptr = (char *)(any ? s - 1 : nptr); | |
41 | return (acc); | |
42 | } | |
43 | + | |
44 | +long | |
45 | +strtol(const char * __restrict nptr, char ** __restrict endptr, int base) | |
46 | +{ | |
47 | + return strtol_l(nptr, endptr, base, __current_locale()); | |
48 | +} |