2 * AcessOS Basic C Library
\r
6 * \todo Move half of these to stdio
\r
8 #include <acess/sys.h>
\r
16 // === PROTOTYPES ===
\r
17 EXPORT int atoi(const char *str);
\r
18 EXPORT void exit(int status);
\r
22 * \fn EXPORT void exit(int status)
\r
25 EXPORT void exit(int status)
\r
31 * \fn EXPORT void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *))
\r
32 * \brief Sort an array
\r
33 * \note Uses a selection sort
\r
35 EXPORT void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *))
\r
38 // With 0 items, there's nothing to do and with 1 its already sorted
\r
39 if(nmemb == 0 || nmemb == 1) return;
\r
42 for( i = 0; i < (nmemb-1); i++ )
\r
45 for( j = i+1; j < nmemb; j++ )
\r
47 if(compar(base+size*j, base + size*min) < 0) {
\r
53 memcpy(swap, base+size*i, size);
\r
54 memcpy(base+size*i, base+size*min, size);
\r
55 memcpy(base+size*i, swap, size);
\r
61 * \fn EXPORT int atoi(const char *str)
\r
62 * \brief Convert a string to an integer
\r
64 EXPORT int atoi(const char *str)
\r
72 while(*str == ' ' || *str == '\t') str++;
\r
74 // Check for negative
\r
85 while( ('0' <= *str && *str <= '9')
\r
86 || ('A' <= *str && *str <= 'F' )
\r
87 || ('a' <= *str && *str <= 'f' )
\r
93 } else if (*str <= 'F') {
\r
94 ret += *str - 'A' + 10;
\r
96 ret += *str - 'a' + 10;
\r
102 while( '0' <= *str && *str <= '7' )
\r
111 while( '0' <= *str && *str <= '9' )
\r
119 // Negate if needed
\r
120 if(neg) ret = -ret;
\r