diff options
author | Jakub Jelinek <jakub@redhat.com> | 2008-05-24 22:22:20 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2008-05-24 22:22:20 +0000 |
commit | 8ba7d5cebbd4acf40dc8d22982baa50c2e1fd194 (patch) | |
tree | ce09df60a6357e43ff65911fc7e817bcae26486f /stdio-common/scanf15.c | |
parent | e96fe50f0dd8d76fabfe139b46f059e3b2373b83 (diff) |
Updated to fedora-glibc-20080524T2218cvs/fedora-glibc-2_8_90-5
Diffstat (limited to 'stdio-common/scanf15.c')
-rw-r--r-- | stdio-common/scanf15.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/stdio-common/scanf15.c b/stdio-common/scanf15.c index cc8aa2e6a6..c56715c486 100644 --- a/stdio-common/scanf15.c +++ b/stdio-common/scanf15.c @@ -50,5 +50,48 @@ main (void) else if (d != 5.25 || memcmp (c, " x", 2) != 0) FAIL (); + const char *tmpdir = getenv ("TMPDIR"); + if (tmpdir == NULL || tmpdir[0] == '\0') + tmpdir = "/tmp"; + + char fname[strlen (tmpdir) + sizeof "/tst-scanf15.XXXXXX"]; + sprintf (fname, "%s/tst-scanf15.XXXXXX", tmpdir); + if (fname == NULL) + FAIL (); + + /* Create a temporary file. */ + int fd = mkstemp (fname); + if (fd == -1) + FAIL (); + + FILE *fp = fdopen (fd, "w+"); + if (fp == NULL) + FAIL (); + else + { + if (fputs (" 1.25s x", fp) == EOF) + FAIL (); + if (fseek (fp, 0, SEEK_SET) != 0) + FAIL (); + if (fscanf (fp, "%as%2c", &f, c) != 2) + FAIL (); + else if (f != 1.25 || memcmp (c, " x", 2) != 0) + FAIL (); + + if (freopen (fname, "r", stdin) == NULL) + FAIL (); + else + { + if (scanf ("%as%2c", &f, c) != 2) + FAIL (); + else if (f != 1.25 || memcmp (c, " x", 2) != 0) + FAIL (); + } + + fclose (fp); + } + + remove (fname); + return result; } |