X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Usermode%2FLibraries%2Flibc.so_src%2Fstrtoi.c;h=de7f72545ef01aaab2b812f6a09b72ae8a139ef4;hb=384befc18f81f42d2dd6e324a35904ad037b3af7;hp=53756dc85c3a9e003de7ff8a65c1f54967641179;hpb=166ddd4673dc43e28659516b3f521ba357b9ab27;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libc.so_src/strtoi.c b/Usermode/Libraries/libc.so_src/strtoi.c index 53756dc8..de7f7254 100644 --- a/Usermode/Libraries/libc.so_src/strtoi.c +++ b/Usermode/Libraries/libc.so_src/strtoi.c @@ -5,13 +5,12 @@ * strtoi.c * - strto[u][l]l/atoi implimentation */ -#include #include #include #include -#include "lib.h" +#include -EXPORT unsigned long long strtoull(const char *str, char **end, int base) +unsigned long long strtoull(const char *str, char **end, int base) { long long ret = 0; @@ -55,9 +54,9 @@ EXPORT 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; @@ -71,7 +70,7 @@ EXPORT unsigned long long strtoull(const char *str, char **end, int base) return ret; } -EXPORT unsigned long strtoul(const char *ptr, char **end, int base) +unsigned long strtoul(const char *ptr, char **end, int base) { unsigned long long tmp = strtoull(ptr, end, base); @@ -83,7 +82,7 @@ EXPORT unsigned long strtoul(const char *ptr, char **end, int base) return tmp; } -EXPORT long long strtoll(const char *str, char **end, int base) +long long strtoll(const char *str, char **end, int base) { int neg = 0; unsigned long long ret; @@ -110,7 +109,7 @@ EXPORT long long strtoll(const char *str, char **end, int base) return ret; } -EXPORT long strtol(const char *str, char **end, int base) +long strtol(const char *str, char **end, int base) { long long tmp = strtoll(str, end, base); if( tmp > LONG_MAX || tmp < LONG_MIN ) { @@ -121,10 +120,10 @@ EXPORT long strtol(const char *str, char **end, int base) } /** - * \fn EXPORT int atoi(const char *str) + * \fn int atoi(const char *str) * \brief Convert a string to an integer */ -EXPORT int atoi(const char *str) +int atoi(const char *str) { long long tmp = strtoll(str, NULL, 0); if( tmp > INT_MAX || tmp < INT_MIN ) { @@ -133,3 +132,19 @@ EXPORT 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; +}