171,18 → 171,27 |
|
if (ch == '0') // octal or hex, read next |
{ |
ch = vgetc(save, src); |
if (ch == 'c' || ch == 'C') |
base = 8; |
ch = vgetc(save, src); |
if (ch == EOF || isspace(ch)) |
else if (ch == 'x' || ch == 'X') |
base = 16; |
if (base == 10) |
have_digits++; |
else |
if (ch == 'x' || ch == 'X') |
{ |
base = 16; |
ch = vgetc(save, src); |
if (ch == EOF) return EOF; |
char tch = vgetc(save, src); |
if ((base == 8 && isdigit(tch) && tch < '8') || |
(base == 16 && isxdigit(tch))) |
ch = tch; |
else |
{ |
have_digits++; |
//base = 10; // not required: zero is zero with any (base > 1) |
vungetc(save, tch, src); |
} |
} |
} |
*digit = 0; |
for (;;) |
{ |