diff options
author | Guillaume Cottenceau <gc@mandriva.com> | 2001-05-14 14:19:32 +0000 |
---|---|---|
committer | Guillaume Cottenceau <gc@mandriva.com> | 2001-05-14 14:19:32 +0000 |
commit | 167217bec15c9c7aa70ba2a3dc9c689b3cd91872 (patch) | |
tree | 7c0c62debf8f9f145643102fb52b81afce743594 /mdk-stage1/dietlibc/lib/strtoul.c | |
parent | 9097327dc1c667fc51b8e05cc7c0626fac96665d (diff) | |
download | drakx-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar drakx-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar.gz drakx-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar.bz2 drakx-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar.xz drakx-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.zip |
import new version of dietlibc
Diffstat (limited to 'mdk-stage1/dietlibc/lib/strtoul.c')
-rw-r--r-- | mdk-stage1/dietlibc/lib/strtoul.c | 37 |
1 files changed, 15 insertions, 22 deletions
diff --git a/mdk-stage1/dietlibc/lib/strtoul.c b/mdk-stage1/dietlibc/lib/strtoul.c index bee849685..3f93962a9 100644 --- a/mdk-stage1/dietlibc/lib/strtoul.c +++ b/mdk-stage1/dietlibc/lib/strtoul.c @@ -1,38 +1,31 @@ #include <ctype.h> -static char *num="0123456789abcdefghijklmnopqrstuvwxyz"; +/* static char *num="0123456789abcdefghijklmnopqrstuvwxyz"; */ unsigned long int strtoul(const char *nptr, char **endptr, int base) { long int v=0; - int a=1,i; - while(isspace(*nptr)) nptr++; + while(isspace(*nptr)) ++nptr; - if (*nptr == '+') { nptr++; } - if (!base) - { - if (*nptr=='0') - { + if (*nptr == '+') ++nptr; + if (!base) { + if (*nptr=='0') { base=8; - if ((*(nptr+1)=='x')||(*(nptr+1)=='X')) base=16; + if ((*(nptr+1)=='x')||(*(nptr+1)=='X')) { + nptr+=2; + base=16; + } } else base=10; } - while((a)&&(*nptr)) - { - a=0; - for (i=0;(!a)&&(i<base);i++) - { - if ((*nptr == num[i]) || (*nptr == (num[i]-' '))) - { - a=1; - v=(v*base)+(&num[i]-num); - } - } - if ((!a)&&(base==16)&&((*nptr=='x')||(*nptr=='X'))) a=1; - if (a) nptr++; + 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; |