summaryrefslogtreecommitdiff
path: root/stdio-common
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2005-09-04 20:10:35 +0000
committerUlrich Drepper <drepper@redhat.com>2005-09-04 20:10:35 +0000
commit34c5e4a1f1de2e755311855c1b15d1f35a1bd61f (patch)
treecbc269d34a1496450decab9563c1fcd087b98f03 /stdio-common
parentf2cd432663701ce4d346b7b3232ad74e98c90aab (diff)
downloadglibc-34c5e4a1f1de2e755311855c1b15d1f35a1bd61f.tar.gz
* stdio-common/Makefile (tests): Add tst-put-error.
* stdio-common/tst-put-error.c: New file. * libio/fileops.c (_IO_new_file_xsputn): If overflow fails and no more data would have to be written signal error. * libio/oldfileops.c (_IO_old_file_xsputn): Likewise. * libio/fileops.c (_IO_new_file_overflow): Use NULL not 0.
Diffstat (limited to 'stdio-common')
-rw-r--r--stdio-common/Makefile2
-rw-r--r--stdio-common/tst-put-error.c33
2 files changed, 34 insertions, 1 deletions
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index d860d75dee..39c7d9db52 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -53,7 +53,7 @@ tests := tstscanf test_rdwr test-popen tstgetln test-fseek \
scanf11 scanf12 tst-tmpnam tst-cookie tst-obprintf tst-sscanf \
tst-swprintf tst-fseek tst-fmemopen test-vfprintf tst-gets \
tst-perror tst-sprintf tst-rndseek tst-fdopen tst-fphex bug14 bug15 \
- tst-popen tst-unlockedio tst-fmemopen2
+ tst-popen tst-unlockedio tst-fmemopen2 tst-put-error
test-srcs = tst-unbputc tst-printf
diff --git a/stdio-common/tst-put-error.c b/stdio-common/tst-put-error.c
new file mode 100644
index 0000000000..a93008c8c5
--- /dev/null
+++ b/stdio-common/tst-put-error.c
@@ -0,0 +1,33 @@
+#include <errno.h>
+#include <error.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+
+static int
+do_test (void)
+{
+ char tmpl[] = "/tmp/tst-put-error.XXXXXX";
+ int fd = mkstemp (tmpl);
+ if (fd == -1)
+ error (EXIT_FAILURE, errno, "cannot create temporary file");
+ FILE *fp = fdopen (fd, "w");
+ if (fp == NULL)
+ error (EXIT_FAILURE, errno, "fdopen");
+ setlinebuf (fp);
+ close (fd);
+ unlink ("aaa");
+ int n = fprintf (fp, "hello world\n");
+ printf ("fprintf = %d\n", n);
+ if (n >= 0)
+ error (EXIT_FAILURE, 0, "first fprintf succeeded");
+ n = fprintf (fp, "hello world\n");
+ printf ("fprintf = %d\n", n);
+ if (n >= 0)
+ error (EXIT_FAILURE, 0, "second fprintf succeeded");
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"