2011-09-20 Bruno Haible <bruno@clisp.org>
+ fclose tests: EBADF tests.
+ * tests/test-fclose.c (main): Add tests for EBADF.
+
fflush tests: EBADF tests.
* tests/test-fflush.c: Include errno.h, macros.h.
(main): Add tests for EBADF.
/* Test that fclose() sets errno if someone else closes the stream
fd behind the back of stdio. */
- f = fdopen (fd, "w+");
- ASSERT (f);
- ASSERT (close (fd) == 0);
- errno = 0;
- ASSERT (fclose (f) == EOF);
- ASSERT (errno == EBADF);
+ {
+ FILE *fp = fdopen (fd, "w+");
+ ASSERT (fp != NULL);
+ ASSERT (close (fd) == 0);
+ errno = 0;
+ ASSERT (fclose (fp) == EOF);
+ ASSERT (errno == EBADF);
+ }
+
+ /* Test that fclose() sets errno if the stream was constructed with
+ an invalid file descriptor. */
+ {
+ FILE *fp = fdopen (-1, "r");
+ if (fp != NULL)
+ {
+ errno = 0;
+ ASSERT (fclose (fp) == EOF);
+ ASSERT (errno == EBADF);
+ }
+ }
+ {
+ FILE *fp = fdopen (99, "r");
+ if (fp != NULL)
+ {
+ errno = 0;
+ ASSERT (fclose (fp) == EOF);
+ ASSERT (errno == EBADF);
+ }
+ }
/* Clean up. */
ASSERT (remove (BASE) == 0);