blob: 3f93962a900c597716dfb35d491f65830b2a7947 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#include <ctype.h>
/* static char *num="0123456789abcdefghijklmnopqrstuvwxyz"; */
unsigned long int strtoul(const char *nptr, char **endptr, int base)
{
long int v=0;
while(isspace(*nptr)) ++nptr;
if (*nptr == '+') ++nptr;
if (!base) {
if (*nptr=='0') {
base=8;
if ((*(nptr+1)=='x')||(*(nptr+1)=='X')) {
nptr+=2;
base=16;
}
}
else
base=10;
}
while(*nptr) {
register unsigned char c=*nptr;
c=(c>='a'?c-'a'+10:c>='A'?c-'A'+10:c-'0');
if (c>=base) break;
v=v*base+c;
++nptr;
}
if (endptr) *endptr=(char *)nptr;
return v;
}
|