diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2023-12-06 15:28:00 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2023-12-06 15:28:00 -0500 |
| commit | 8d27ab131e0829fb847c93529628e4751b356b5f (patch) | |
| tree | 500315467814e493b113dbb18e91e84ac509401e /src/helpers.cpp | |
| parent | 8629b2497b7cb453d1e4a3ed6897cfaf8a771863 (diff) | |
add str2num for uint8_t
Diffstat (limited to 'src/helpers.cpp')
| -rw-r--r-- | src/helpers.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/helpers.cpp b/src/helpers.cpp index 22be4de..e08906b 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -114,6 +114,42 @@ STR2NUM_ERROR str2num(uint16_t &i, char const *s, int base) { return SUCCESS; } +STR2NUM_ERROR str2num(int8_t &i, char const *s, int base) { + char *end; + long l; + errno = 0; + l = strtol(s, &end, base); + if (errno == ERANGE && l == LONG_MAX) { + return OVERFLOW; + } + if (errno == ERANGE && l == LONG_MIN) { + return UNDERFLOW; + } + if (*s == '\0' || *end != '\0') { + return INCONVERTIBLE; + } + i = l; + return SUCCESS; +} + +STR2NUM_ERROR str2num(uint8_t &i, char const *s, int base) { + char *end; + long l; + errno = 0; + l = strtoul(s, &end, base); + if (errno == ERANGE && l == LONG_MAX) { + return OVERFLOW; + } + if (errno == ERANGE && l == LONG_MIN) { + return UNDERFLOW; + } + if (*s == '\0' || *end != '\0') { + return INCONVERTIBLE; + } + i = l; + return SUCCESS; +} + STR2NUM_ERROR str2num(float &f, char const *s, char *&pEnd) { float l; errno = 0; |
