X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Flibc.so_src%2Fstrtoi.c;h=de7f72545ef01aaab2b812f6a09b72ae8a139ef4;hb=384befc18f81f42d2dd6e324a35904ad037b3af7;hp=9326fb8a1028bd7f60f92514b82e24cd40925e30;hpb=479d0634670b58da044bc58149662adba0ad1d0b;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libc.so_src/strtoi.c b/Usermode/Libraries/libc.so_src/strtoi.c index 9326fb8a..de7f7254 100644 --- a/Usermode/Libraries/libc.so_src/strtoi.c +++ b/Usermode/Libraries/libc.so_src/strtoi.c @@ -54,9 +54,9 @@ unsigned long long strtoull(const char *str, char **end, int base) if( '0' <= *str && *str <= '9' ) next = *str - '0'; if( 'A' <= *str && *str <= 'A'+base-10-1 ) - next = *str - 'A'; + next = *str - 'A' + 10; if( 'a' <= *str && *str <= 'a'+base-10-1 ) - next = *str - 'a'; + next = *str - 'a' + 10; } if( next < 0 ) break; @@ -132,3 +132,19 @@ int atoi(const char *str) } return tmp; } + +long atol(const char *str) +{ + long long tmp = strtoll(str, NULL, 0); + if( tmp > LONG_MAX || tmp < LONG_MIN ) { + errno = ERANGE; + return (tmp > LONG_MAX) ? LONG_MAX : LONG_MIN; + } + return tmp; +} + +long long atoll(const char *str) +{ + long long tmp = strtoll(str, NULL, 0); + return tmp; +}