]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
..
authorUlrich Drepper <drepper@redhat.com>
Sun, 18 Feb 2007 09:43:44 +0000 (09:43 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sun, 18 Feb 2007 09:43:44 +0000 (09:43 +0000)
More simplifications of floating-point reader.

ChangeLog
stdio-common/vfscanf.c

index d38601e871157c1d6944507b480549327366bee6..fc077832aaf26aa8a327ebe4544e0b8de59c46c0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
 2007-02-18  Ulrich Drepper  <drepper@redhat.com>
 
        * stdio-common/vfscanf.c: Remove unused WIDTH handling.
+       More simplifications of floating-point reader.
 
        * stdio-common/Makefile (tests): Add tst-swscanf.
        * stdio-common/tst-sscanf.c: Make tests usable for swscanf
index b7acd7993b95efc79eb41ad7de091cd882bcfb78..1149686d75ad8b1e6f1aed23c07005180169b035 100644 (file)
@@ -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;
            }