diff options
Diffstat (limited to 'utils.c')
-rw-r--r-- | utils.c | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -0,0 +1,38 @@ +#include <stdint.h> + +#include "types.h" + +uint64_t str_to_unsigned(struct string str, uint8_t *err) { + if (str.len == 0) { + *err = 1; + return 0; + } + + uint64_t val = 0; + while (str.len > 0) { + switch(str.data[0]) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + val *= 10; + val += str.data[0] - 0x30; + break; + default: + *err = 1; + return 0; + } + + str.data++; + str.len--; + } + + *err = 0; + return val; +} |