OSDN Git Service

first commit
[winexe-harib/winexe-harib.git] / golibc / strtoul.c
1 /* copyright(C) 2003 H.Kawai (under KL-01). */
2
3 #include <errno.h>
4
5 extern "C" unsigned long strtoul0(const char **ps, int base, char *errflag);
6
7 extern "C" unsigned long strtoul(const char *s, const char **endp, int base)
8 {
9         const char *s0 = s, *s1;
10         char sign = 0, errflag;
11         unsigned long val;
12         while (*s != '\0' && *s <= ' ')
13                 s++;
14         if (*s == '-') {
15                 sign = 1;
16                 s++;
17         }
18         while (*s != '\0' && *s <= ' ')
19                 s++;
20         s1 = s;
21         val = strtoul0(&s, base, &errflag);
22         if (s == s1)
23                 s = s0;
24         if (endp)
25                 *endp = s;
26         if (errflag == 0 && sign != 0)
27                 val = - val;
28         if (errflag)
29                 errno = ERANGE;
30         return val;
31 }