]>
git.ipfire.org Git - thirdparty/bird.git/blob - lib/strtoul.c
2 * BIRD Library -- Parse numbers
4 * (c) 2019 Maria Matejka <mq@jmq.cz>
6 * Can be freely distributed and used under the terms of the GNU GPL.
10 #include "lib/string.h"
14 #define ULI_MAX_DIV10 (UINT64_MAX / 10)
15 #define ULI_MAX_MOD10 (UINT64_MAX % 10)
18 bstrtoul10(const char *str
, char **end
)
21 for (*end
= (char *) str
; (**end
>= '0') && (**end
<= '9'); (*end
)++) {
22 u64 digit
= **end
- '0';
23 if ((out
> ULI_MAX_DIV10
) ||
24 (out
== ULI_MAX_DIV10
) && (digit
> ULI_MAX_MOD10
)) {
36 bstrtoul16(const char *str
, char **end
)
39 for (int i
=0; i
<=(64/4); i
++) {
47 out
+= str
[i
] + 10 - 'a';
51 out
+= str
[i
] + 10 - 'A';
54 *end
= (char *) &(str
[i
]);