fclose: guarantee behavior on seekable stdin
authorEric Blake <eblake@redhat.com>
Fri, 6 May 2011 19:01:17 +0000 (13:01 -0600)
committerEric Blake <eblake@redhat.com>
Fri, 6 May 2011 19:01:17 +0000 (13:01 -0600)
* modules/fclose (Depends-on): Add fflush.
* doc/posix-functions/fclose.texi (fclose): Document this.
* tests/test-fclose.c (main): Make test for this unconditional.

Signed-off-by: Eric Blake <eblake@redhat.com>
ChangeLog
doc/posix-functions/fclose.texi
modules/fclose
tests/test-fclose.c

index 49b27664017202493b4b5a1bb72bf24fbc0fcaa5..b7251e61986f1be661369f9440b2d012ea3f6f23 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-05-06  Eric Blake  <eblake@redhat.com>
+
+       fclose: guarantee behavior on seekable stdin
+       * modules/fclose (Depends-on): Add fflush.
+       * doc/posix-functions/fclose.texi (fclose): Document this.
+       * tests/test-fclose.c (main): Make test for this unconditional.
+
 2011-05-06  Bruno Haible  <bruno@clisp.org>
 
        fflush, fpurge: Relicense under LGPLv2+.
index a7b576088ed2c995e05ae5ad64df0354cac7b107..40a205289ee766c166b9bd55d33fb708fa91a9b7 100644 (file)
@@ -4,18 +4,14 @@
 
 POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/fclose.html}
 
-Gnulib module: fclose, fflush
+Gnulib module: fclose
 
-Portability problems fixed by Gnulib module @code{fclose} together with module @code{fflush}:
+Portability problems fixed by Gnulib:
 @itemize
 @item
 On some platforms, this function fails to set the file position of a
 seekable input stream to the byte after the last one actually read:
 glibc 2.13, FreeBSD.
-@end itemize
-
-Portability problems fixed by Gnulib module @code{fclose}:
-@itemize
 @item
 On Windows platforms (excluding Cygwin), @code{socket} and @code{accept}
 followed by @code{fdopen} do not return streams that can be closed by
index ac383aa24b4bd350116873c676be826f51c16bb6..e6493c908a6ac5f32ea35f5e6ed769f6206a9843 100644 (file)
@@ -8,6 +8,7 @@ m4/fclose.m4
 Depends-on:
 stdio
 close           [test $REPLACE_FCLOSE = 1]
+fflush          [test $REPLACE_FCLOSE = 1]
 freading        [test $REPLACE_FCLOSE = 1]
 lseek           [test $REPLACE_FCLOSE = 1]
 
@@ -25,4 +26,3 @@ LGPLv2+
 
 Maintainer:
 Bruno Haible
-
index d9b940619ba8035c0fa591007cfd6666f2821bd4..a11eca96e39d29ddf7785d3921a06143786b69ef 100644 (file)
@@ -62,9 +62,7 @@ main (int argc, char **argv)
   ASSERT (errno == EBADF);
   ASSERT (lseek (fd, 0, SEEK_CUR) == 2);
 
-#if GNULIB_FFLUSH
-  /* Likewise for an input stream, but only when we know fflush works
-     on input streams.  */
+  /* Likewise for an input stream.  */
   fd2 = dup (fd);
   ASSERT (0 <= fd2);
   f = fdopen (fd2, "r");
@@ -75,7 +73,6 @@ main (int argc, char **argv)
   ASSERT (lseek (fd2, 0, SEEK_CUR) == -1);
   ASSERT (errno == EBADF);
   ASSERT (lseek (fd, 0, SEEK_CUR) == 3);
-#endif
 
   /* Test that fclose() sets errno if someone else closes the stream
      fd behind the back of stdio.  */