717001ffd964c6dea51974d511031a8d2d4a7eae
[ia32rtools.git] / tools / masm_tools.h
1 #if __SIZEOF_LONG__ != 8
2 #error fix ret/strtoul to do 64bit
3 #endif
4
5 static unsigned long parse_number(const char *number)
6 {
7   int len = strlen(number);
8   const char *p = number;
9   char *endp = NULL;
10   unsigned long ret;
11   int neg = 0;
12   int bad;
13
14   if (*p == '-') {
15     neg = 1;
16     p++;
17   }
18   if (len > 1 && *p == '0')
19     p++;
20   if (number[len - 1] == 'h') {
21     ret = strtoul(p, &endp, 16);
22     bad = (*endp != 'h');
23   }
24   else {
25     ret = strtoul(p, &endp, 10);
26     bad = (*endp != 0);
27   }
28   if (bad)
29     aerr("number parsing failed (%s)\n", number);
30   if (neg)
31     ret = -ret;
32   return ret;
33 }
34
35