summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/lib/strtoull.c
diff options
context:
space:
mode:
authorGuillaume Cottenceau <gc@mandriva.com>2001-05-14 14:19:32 +0000
committerGuillaume Cottenceau <gc@mandriva.com>2001-05-14 14:19:32 +0000
commit167217bec15c9c7aa70ba2a3dc9c689b3cd91872 (patch)
tree7c0c62debf8f9f145643102fb52b81afce743594 /mdk-stage1/dietlibc/lib/strtoull.c
parent9097327dc1c667fc51b8e05cc7c0626fac96665d (diff)
downloaddrakx-backup-do-not-use-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar
drakx-backup-do-not-use-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar.gz
drakx-backup-do-not-use-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar.bz2
drakx-backup-do-not-use-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar.xz
drakx-backup-do-not-use-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.zip
import new version of dietlibc
Diffstat (limited to 'mdk-stage1/dietlibc/lib/strtoull.c')
-rw-r--r--mdk-stage1/dietlibc/lib/strtoull.c37
1 files changed, 14 insertions, 23 deletions
diff --git a/mdk-stage1/dietlibc/lib/strtoull.c b/mdk-stage1/dietlibc/lib/strtoull.c
index 64f095f60..40818958d 100644
--- a/mdk-stage1/dietlibc/lib/strtoull.c
+++ b/mdk-stage1/dietlibc/lib/strtoull.c
@@ -1,38 +1,29 @@
#include <ctype.h>
-static char *num="0123456789abcdefghijklmnopqrstuvwxyz";
-
unsigned long long int strtoull(const char *nptr, char **endptr, int base)
{
long 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;