X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Flibc.so_src%2Fstdlib.c;h=6e81c654ea82b905e50c70f56e40ed23486837da;hb=27cb4fff4ed854d8be598a1157265c6de8aa035a;hp=c91106c4070c72bf1008599ce0dc980338ce7902;hpb=8dcc3e209d0d728565a18c8dca2b0ba220b74a6f;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libc.so_src/stdlib.c b/Usermode/Libraries/libc.so_src/stdlib.c index c91106c4..6e81c654 100644 --- a/Usermode/Libraries/libc.so_src/stdlib.c +++ b/Usermode/Libraries/libc.so_src/stdlib.c @@ -5,14 +5,8 @@ #include #include #include -#include -#include -#include #include "lib.h" -#define _stdout 1 -#define _stdin 0 - extern void *_crt0_exit_handler; // === PROTOTYPES === @@ -48,7 +42,7 @@ EXPORT void exit(int status) */ EXPORT void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *)) { - int i, j, min; + size_t i, j, min; // With 0 items, there's nothing to do and with 1 its already sorted if(nmemb == 0 || nmemb == 1) return; @@ -71,95 +65,6 @@ EXPORT void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void } } -EXPORT long long strtoll(const char *str, char **end, int base) -{ - int neg = 0; - long long ret = 0; - - if( !str || base < 0 || base > 36 || base == 1 ) { - if(end) - *end = (char*)str; - errno = EINVAL; - return 0; - } - - while( isspace(*str) ) - str++; - - // Check for negative (or positive) sign - if(*str == '-' || *str == '+') { - neg = (*str == '-'); - str++; - } - - if( base == 0 || base == 16 ) { - if( *str == '0' && str[1] == 'x' ) { - str += 2; - base = 16; - } - } - - if( base == 0 && *str == '0' ) { - str ++; - base = 8; - } - - if( base == 0 ) - base = 10; - - while( *str ) - { - int next = -1; - if( base <= 10 ) { - if( '0' <= *str && *str <= '0'+base-1 ) - next = *str - '0'; - } - else { - if( '0' <= *str && *str <= '9' ) - next = *str - '0'; - if( 'A' <= *str && *str <= 'A'+base-10-1 ) - next = *str - 'A'; - if( 'a' <= *str && *str <= 'a'+base-10-1 ) - next = *str - 'a'; - } - if( next < 0 ) - break; - ret *= base; - ret += next; - str ++; - } - - if( neg ) - ret = -ret; - - if(end) - *end = (char*)str; - return ret; -} - -EXPORT long strtol(const char *str, char **end, int base) -{ - long long tmp = strtoll(str, end, base); - if( tmp > LONG_MAX || tmp < LONG_MIN ) { - errno = ERANGE; - return (tmp > LONG_MAX) ? LONG_MAX : LONG_MIN; - } - return tmp; -} - -/** - * \fn EXPORT int atoi(const char *str) - * \brief Convert a string to an integer - */ -EXPORT int atoi(const char *str) -{ - long long tmp = strtoll(str, NULL, 0); - if( tmp > INT_MAX || tmp < INT_MIN ) { - errno = ERANGE; - return (tmp > INT_MAX) ? INT_MAX : INT_MIN; - } - return tmp; -} int abs(int j) { return j < 0 ? -j : j; } long int labs(long int j) { return j < 0 ? -j : j; }