diff options
Diffstat (limited to 'stdio-common')
-rw-r--r-- | stdio-common/vfscanf.c | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c index b7acd7993b..1149686d75 100644 --- a/stdio-common/vfscanf.c +++ b/stdio-common/vfscanf.c @@ -1597,63 +1597,6 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr, if (__builtin_expect (width == 0 || inchar () == EOF, 0)) /* EOF is only an input error before we read any chars. */ conv_error (); - if (! ISDIGIT (c) && TOLOWER (c) != L_('i') - && TOLOWER (c) != L_('n')) - { -#ifdef COMPILE_WSCANF - if (__builtin_expect (c != decimal, 0)) - { - /* This is no valid number. */ - ungetc (c, s); - conv_error (); - } -#else - /* Match against the decimal point. At this point - we are taking advantage of the fact that we can - push more than one character back. This is - (almost) never necessary since the decimal point - string hopefully never contains more than one - byte. */ - const char *cmpp = decimal; - int avail = width > 0 ? width : INT_MAX; - - while ((unsigned char) *cmpp == c && avail-- > 0) - if (*++cmpp == '\0') - break; - else - { - if (inchar () == EOF) - break; - } - - if (__builtin_expect (*cmpp != '\0', 0)) - { - /* This is no valid number. */ - while (1) - { - ungetc (c, s); - if (cmpp == decimal) - break; - c = (unsigned char) *--cmpp; - } - - conv_error (); - } - else - { - /* Add all the characters. */ - for (cmpp = decimal; *cmpp != '\0'; ++cmpp) - ADDW ((unsigned char) *cmpp); - if (width > 0) - width = avail; - got_dot = 1; - - c = inchar (); - } - if (width > 0) - width = avail; -#endif - } if (width > 0) --width; } |