diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | stdio-common/scanf12.c | 2 | ||||
-rw-r--r-- | stdio-common/tstscanf.c | 17 | ||||
-rw-r--r-- | stdio-common/vfscanf.c | 6 |
4 files changed, 24 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog index b15e128191..d24d3ea16b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2000-07-22 Ulrich Drepper <drepper@redhat.com> + * stdio-common/vfscanf.c: Handle input -- with format %f correctly + (it's no input error). + * stdio-common/tstscanf.c: Add test case for format %f with input --. + * stdio-common/scanf12.c: Correct expected result for first scanf. + * stdio-common/vfprintf.c (process_string_arg): Correct handling of multibyte character strings in %s format with precision. diff --git a/stdio-common/scanf12.c b/stdio-common/scanf12.c index b557785377..db37e2fedc 100644 --- a/stdio-common/scanf12.c +++ b/stdio-common/scanf12.c @@ -7,7 +7,7 @@ main (void) double d; int c; - if (scanf ("%lg", &d) != EOF) + if (scanf ("%lg", &d) != 0) { printf ("scanf didn't failed\n"); exit (1); diff --git a/stdio-common/tstscanf.c b/stdio-common/tstscanf.c index 6db98eef31..4732657e53 100644 --- a/stdio-common/tstscanf.c +++ b/stdio-common/tstscanf.c @@ -277,7 +277,7 @@ main (int argc, char **argv) /* From PR libc/1313 reported by Ben Caradoc-Davies <bmcd@physics.otago.ac.nz>. */ float value; int res; - + res = sscanf ("0123", "%2f", &value); if (res != 1 || value != 1.0) { @@ -285,6 +285,19 @@ main (int argc, char **argv) result = 1; } } - + + fputs ("Test 10:\n", stdout); + { + float value; + int res; + + res = sscanf ("--", "%f", &value); + if (res != 0) + { + fputs ("test failed!\n", stdout); + result = 1; + } + } + exit (result); } diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c index 90d73bdbde..9457c4c17e 100644 --- a/stdio-common/vfscanf.c +++ b/stdio-common/vfscanf.c @@ -1270,7 +1270,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr) if (n == 10) { - /*Have not yet found the digit. */ + /* Have not yet found the digit. */ while (++from_level <= to_level) { /* Search all ten digits of this level. */ @@ -1491,7 +1491,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr) { /* This is no valid number. */ ungetc (c, s); - input_error (); + conv_error (); } #else /* Match against the decimal point. At this point @@ -1524,7 +1524,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr) c = *--cmpp; } - input_error (); + conv_error (); } if (width > 0) /* +1 because we substract below. */ |