diff options
author | Jakob Kaivo <jkk@ung.org> | 2019-02-27 19:17:39 -0500 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2019-02-27 19:17:39 -0500 |
commit | e1477898d0203dae4b2fe9ad62998bc27d4b4fc9 (patch) | |
tree | bda9ccc11307e41de7c5a4e6e4e92088fe4b1804 /src/stdlib/_strtoi.h | |
parent | fcb83049b1942fafa784fc51869818651c04acbb (diff) |
add common _strtoi function body
Diffstat (limited to 'src/stdlib/_strtoi.h')
-rw-r--r-- | src/stdlib/_strtoi.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/stdlib/_strtoi.h b/src/stdlib/_strtoi.h new file mode 100644 index 00000000..7a2d5cdf --- /dev/null +++ b/src/stdlib/_strtoi.h @@ -0,0 +1,43 @@ + /* int iswide = (sizeof(*nptr) == sizeof(wchar_t)); */ + (void)max; + + if (base == 0) { + /* determine base from prefix */ + } + + if (min == 0) { + /* unsigned */ + } + + while (*nptr) { + int n = 0; + /* int c = iswide ? wctomb(*nptr) : *nptr; */ + + switch (*nptr) { + case '0': n = 0; break; + case '1': n = 1; break; + case '2': n = 2; break; + case '3': n = 3; break; + case '4': n = 4; break; + case '5': n = 5; break; + case '6': n = 6; break; + case '7': n = 7; break; + case '8': n = 8; break; + case '9': n = 9; break; + case 'a': case 'A': n = 0xa; break; + case 'b': case 'B': n = 0xb; break; + case 'c': case 'C': n = 0xc; break; + case 'd': case 'D': n = 0xd; break; + case 'e': case 'E': n = 0xe; break; + case 'f': case 'F': n = 0xf; break; + default: n = -1; break; + } + + if (n >= base || n < 0) { + *endptr = (void*)nptr; + break; + } + + ret = (ret * base) + n; + nptr++; + } |