From 8d27ab131e0829fb847c93529628e4751b356b5f Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Wed, 6 Dec 2023 15:28:00 -0500 Subject: add str2num for uint8_t --- src/helpers.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/helpers.cpp') 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; -- cgit v1.2.3