diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-04-16 16:55:24 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-04-16 16:55:24 -0400 |
commit | 96e9773eb764afa649b099a6e283dba4c69389a9 (patch) | |
tree | 52e2223324cce3db02ff6318ad3f8eb940bd8d5f /src/stdlib/wcstoimax.c | |
parent | 18efeb320b763e541a7dbf61a7da1cbe13ab2be9 (diff) | |
download | musl-96e9773eb764afa649b099a6e283dba4c69389a9.tar.gz musl-96e9773eb764afa649b099a6e283dba4c69389a9.tar.bz2 musl-96e9773eb764afa649b099a6e283dba4c69389a9.tar.xz musl-96e9773eb764afa649b099a6e283dba4c69389a9.zip |
use the new integer parser (FILE/shgetc based) for strtol, wcstol, etc.
Diffstat (limited to 'src/stdlib/wcstoimax.c')
-rw-r--r-- | src/stdlib/wcstoimax.c | 39 |
1 files changed, 0 insertions, 39 deletions
diff --git a/src/stdlib/wcstoimax.c b/src/stdlib/wcstoimax.c deleted file mode 100644 index 344fe3a3..00000000 --- a/src/stdlib/wcstoimax.c +++ /dev/null @@ -1,39 +0,0 @@ -#include <wchar.h> -#include <wctype.h> -#include <inttypes.h> -#include <errno.h> -#include "intparse.h" - -intmax_t wcstoimax(const wchar_t *s, wchar_t **p, int base) -{ - const wchar_t *s1 = s; - struct intparse ip = {0}; - - if (p) *p = (wchar_t *)s; - - if (base && base-2U > 34) { - errno = EINVAL; - return 0; - } - - for (; iswspace(*s); s++); - - ip.base = base; - for (; __intparse(&ip, (char[]){(*s&-(*s<128U))}, 1); s++); - - if (p && ip.err != EINVAL) - *p = (wchar_t *)s1 + ip.cnt; - - if (ip.err) { - errno = ip.err; - if (ip.err == EINVAL) return 0; - return ip.neg ? INTMAX_MIN : INTMAX_MAX; - } - - if (ip.val > INTMAX_MAX) { - if (!ip.neg || -ip.val != INTMAX_MIN) - errno = ERANGE; - return ip.neg ? INTMAX_MIN : INTMAX_MAX; - } - return ip.neg ? -ip.val : ip.val; -} |