* cppexp.c (parse_number): Use ISXDIGIT/hex_value.
* cpplex.c (hex_digit_value): Use hex_p/hex_value.
* cppmain.c (general_init): Call hex_init.
+ * tradcif.y (parse_number): Use TOLOWER/ISXDIGIT/hex_value/hex_p.
* config.gcc (i[34567]86-dg-dgux*): Don't set `out_file'.
c = *p++;
len--;
if (ISUPPER (c))
- c += 'a' - 'A';
-
- if (ISDIGIT (c)) {
- n *= base;
- n += c - '0';
- } else if (base == 16 && c >= 'a' && c <= 'f') {
- n *= base;
- n += c - 'a' + 10;
+ c = TOLOWER (c);
+
+ if (ISDIGIT (c)
+ || (base == 16 && ISXDIGIT (c))) {
+ n = (n * base) + hex_value (c);
} else {
/* `l' means long, and `u' means unsigned. */
while (1) {
for (;;)
{
c = *(*string_ptr)++;
- if (ISDIGIT (c))
- i = (i << 4) + c - '0';
- else if (c >= 'a' && c <= 'f')
- i = (i << 4) + c - 'a' + 10;
- else if (c >= 'A' && c <= 'F')
- i = (i << 4) + c - 'A' + 10;
+ if (hex_p (c))
+ i = (i << 4) + hex_value (c);
else
{
(*string_ptr)--;