From 19c7cadad210baf57a00508d103e8669e1df9020 Mon Sep 17 00:00:00 2001 From: Gabor Adam Toth Date: Thu, 3 Nov 2011 14:15:42 +0100 Subject: [PATCH] unsigned number parsing --- include/psyc/parse.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/include/psyc/parse.h b/include/psyc/parse.h index 0b9c737..2f8b31d 100644 --- a/include/psyc/parse.h +++ b/include/psyc/parse.h @@ -387,7 +387,7 @@ static inline PsycParseListRC psyc_parse_list (PsycParseListState *state, PsycString *elem); static inline -PsycBool psyc_parse_number (const char *value, size_t len, ssize_t *n) +PsycBool psyc_parse_number (const char *value, size_t len, int64_t *n) { size_t c = 0; uint8_t neg = 0; @@ -411,6 +411,20 @@ PsycBool psyc_parse_number (const char *value, size_t len, ssize_t *n) return PSYC_TRUE; } +static inline +PsycBool psyc_parse_number_unsigned (const char *value, size_t len, uint64_t *n) +{ + size_t c = 0; + if (!value) + return PSYC_FALSE; + + *n = 0; + while (c < len && value[c] >= '0' && value[c] <= '9') + *n = 10 * *n + (value[c++] - '0'); + + return c == len ? PSYC_TRUE : PSYC_FALSE; +} + static inline PsycBool psyc_parse_time (const char *value, size_t len, time_t *t) {