4 static uint64_t parse_number(const char *number, int is64)
6 int len = strlen(number);
7 const char *p = number;
17 if (len > 1 && *p == '0')
21 if (number[len - 1] == 'h') {
22 ret = strtouq(p, &endp, 16);
26 ret = strtouq(p, &endp, 10);
29 if (errno != 0 || bad)
30 aerr("number parsing failed (%s): %d\n", number, errno);
31 // if this happens, callers must be fixed too
32 if (!is64 && ret > 0xfffffffful)
33 aerr("number too large? (%s)\n", number);
35 if (!is64 && ret > 0x7fffffff)
36 aerr("too large negative? (%s)\n", number);