mirror of
https://git.savannah.gnu.org/git/gnulib.git
synced 2025-09-11 11:50:52 +03:00
This fixes the fclose failures detected in the previous patch, but only when the GPL fflush module is also in use. That is because the need for behavior of resetting seekable input streams is much less common, and the fix more complex. The LGPLv2+ test for fclose() in isolation is relaxed to pass if fflush is not being replaced to cater to input streams. * modules/fflush (Depends-on): Add fclose. * m4/fflush.m4 (gl_FUNC_FFLUSH): Also replace fclose. * lib/fclose.c (rpl_fclose): Don't cause spurious failures on memstreams with no backing fd. * doc/posix-functions/fclose.texi (fclose): Document the use of fflush module to fix the bug. * tests/test-fclose.c (main): Relax test when fclose is used in isolation. Signed-off-by: Eric Blake <eblake@redhat.com>
31 lines
839 B
Plaintext
31 lines
839 B
Plaintext
@node fclose
|
|
@section @code{fclose}
|
|
@findex fclose
|
|
|
|
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/fclose.html}
|
|
|
|
Gnulib module: fclose, fflush
|
|
|
|
Portability problems fixed by Gnulib module @code{fflush}:
|
|
@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
|
|
@code{fclose}.
|
|
@end itemize
|
|
|
|
Portability problems not fixed by Gnulib:
|
|
@itemize
|
|
@item
|
|
On Windows platforms (excluding Cygwin), this function does not set @code{errno}
|
|
upon failure.
|
|
@end itemize
|