1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
Description: include/strutils: Add ul_strtou64() function
Origin: backport, https://github.com/util-linux/util-linux/commit/84825b161ba5d18da4142893b9789b3fc71284d9
Author: Salvatore Bonaccorso <carnil@debian.org>
--- a/include/strutils.h
+++ b/include/strutils.h
@@ -16,6 +16,8 @@ extern int parse_size(const char *str, u
extern int strtosize(const char *str, uintmax_t *res);
extern uintmax_t strtosize_or_err(const char *str, const char *errmesg);
+extern int ul_strtou64(const char *str, uint64_t *num, int base);
+
extern int16_t strtos16_or_err(const char *str, const char *errmesg);
extern uint16_t strtou16_or_err(const char *str, const char *errmesg);
extern uint16_t strtox16_or_err(const char *str, const char *errmesg);
--- a/lib/strutils.c
+++ b/lib/strutils.c
@@ -319,6 +319,20 @@ char *strndup(const char *s, size_t n)
}
#endif
+int ul_strtou64(const char *str, uint64_t *num, int base)
+{
+ char *end = NULL;
+
+ errno = 0;
+ if (str == NULL || *str == '\0')
+ return -EINVAL;
+ *num = (uint64_t) strtoumax(str, &end, base);
+
+ if (errno || str == end || (end && *end))
+ return -EINVAL;
+ return 0;
+}
+
static uint32_t _strtou32_or_err(const char *str, const char *errmesg, int base);
static uint64_t _strtou64_or_err(const char *str, const char *errmesg, int base);
|