Skip to content

Commit

Permalink
..
Browse files Browse the repository at this point in the history
	More simplifications of floating-point reader.
  • Loading branch information
Ulrich Drepper committed Feb 18, 2007
1 parent e9bb524 commit da50f00
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 57 deletions.
1 change: 1 addition & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -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
Expand Down
57 changes: 0 additions & 57 deletions stdio-common/vfscanf.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down

0 comments on commit da50f00

Please sign in to comment.