mirror of
https://git.savannah.gnu.org/git/gnulib.git
synced 2025-09-02 15:41:25 +03:00
glibc was not the only platform where fprintf(fopen(,"r")) fails to detect errors; cygwin 1.7.9 is another culprit (although it will be fixed for 1.7.10), and I suspect that several other platforms were failing perror2 for the same reason. At this point, there are so many functions affected, and the way to avoid the bug is easy enough (don't pass bogus streams to output-producing functions), that I'm not worried about fixing things other than to document them. * tests/test-perror2.c (main): Relax test on requiring detection of stream errors, and use unbuffered stream. * doc/posix-functions/dprintf.texi (dprintf): Document bug. * doc/posix-functions/fprintf.texi (fprintf): Likewise. * doc/posix-functions/fputc.texi (fputc): Likewise. * doc/posix-functions/fputs.texi (fputs): Likewise. * doc/posix-functions/fputws.texi (fputws): Likewise. * doc/posix-functions/fwprintf.texi (fwprintf): Likewise. * doc/posix-functions/fwrite.texi (fwrite): Likewise. * doc/posix-functions/getopt.texi (getopt): Likewise. * doc/posix-functions/perror.texi (perror): Likewise. * doc/posix-functions/printf.texi (printf): Likewise. * doc/posix-functions/psiginfo.texi (psiginfo): Likewise. * doc/posix-functions/psignal.texi (psignal): Likewise. * doc/posix-functions/putc.texi (putc): Likewise. * doc/posix-functions/putc_unlocked.texi (putc_unlocked): Likewise. * doc/posix-functions/putchar.texi (putchar): Likewise. * doc/posix-functions/putchar_unlocked.texi (putchar_unlocked): Likewise. * doc/posix-functions/puts.texi (puts): Likewise. * doc/posix-functions/putwc.texi (putwc): Likewise. * doc/posix-functions/putwchar.texi (putwchar): Likewise. * doc/posix-functions/vdprintf.texi (vdprintf): Likewise. * doc/posix-functions/vfprintf.texi (vfprintf): Likewise. * doc/posix-functions/vfwprintf.texi (vfwprintf): Likewise. * doc/posix-functions/vprintf.texi (vprintf): Likewise. * doc/posix-functions/vwprintf.texi (vwprintf): Likewise. * doc/posix-functions/wordexp.texi (wordexp): Likewise. * doc/posix-functions/wprintf.texi (wprintf): Likewise. Signed-off-by: Eric Blake <eblake@redhat.com>
91 lines
3.3 KiB
Plaintext
91 lines
3.3 KiB
Plaintext
@node vprintf
|
|
@section @code{vprintf}
|
|
@findex vprintf
|
|
|
|
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/vprintf.html}
|
|
|
|
Gnulib module: vprintf-posix or stdio, nonblocking, sigpipe
|
|
|
|
Portability problems fixed by Gnulib module @code{vprintf-posix}:
|
|
@itemize
|
|
@item
|
|
This function does not support size specifiers as in C99 (@code{hh}, @code{ll},
|
|
@code{j}, @code{t}, @code{z}) on some platforms:
|
|
AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, BeOS.
|
|
@item
|
|
printf of @samp{long double} numbers is unsupported on some platforms:
|
|
mingw, BeOS.
|
|
@item
|
|
printf @code{"%f"}, @code{"%e"}, @code{"%g"} of Infinity and NaN yields an
|
|
incorrect result on some platforms:
|
|
AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw.
|
|
@item
|
|
This function does not support the @samp{a} and @samp{A} directives on some
|
|
platforms:
|
|
glibc-2.3.6, MacOS X 10.5, NetBSD 5.0, OpenBSD 4.0, AIX 5.2, HP-UX 11,
|
|
IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, BeOS.
|
|
@item
|
|
This function does not support the @samp{F} directive on some platforms:
|
|
NetBSD 3.0, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9,
|
|
Cygwin 1.5.x, mingw, BeOS.
|
|
@item
|
|
This function does not support the @samp{ls} directive on some platforms:
|
|
OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Haiku.
|
|
@item
|
|
This function does not support precisions in the @samp{ls} directive correctly
|
|
on some platforms:
|
|
Solaris 11 2010-11.
|
|
@item
|
|
This function does not support format directives that access arguments in an
|
|
arbitrary order, such as @code{"%2$s"}, on some platforms:
|
|
NetBSD 3.0, mingw, BeOS.
|
|
@item
|
|
This function doesn't support the @code{'} flag on some platforms:
|
|
NetBSD 3.0, Cygwin 1.5.24, mingw.
|
|
@item
|
|
This function behaves incorrectly when a @samp{-} flag and a negative width
|
|
are specified together, on some platforms:
|
|
HP-UX 10.20.
|
|
@item
|
|
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
|
|
with zeroes) on some platforms:
|
|
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw.
|
|
@item
|
|
This function does not support precisions larger than 512 or 1024 in integer,
|
|
floating-point and pointer output on some platforms:
|
|
Solaris 10/x86, mingw, BeOS.
|
|
@item
|
|
This function mishandles large floating point precisions
|
|
(for example, formatting 1.0 with @samp{"%.511f"})
|
|
on some platforms:
|
|
Solaris 10.
|
|
@item
|
|
This function can crash in out-of-memory conditions on some platforms:
|
|
MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0.
|
|
@end itemize
|
|
|
|
Portability problems fixed by Gnulib module @code{stdio} or @code{vprintf-posix}, together with module @code{nonblocking}:
|
|
@itemize
|
|
@item
|
|
When writing to a non-blocking pipe whose buffer is full, this function fails
|
|
with @code{errno} being set to @code{ENOSPC} instead of @code{EAGAIN} on some
|
|
platforms:
|
|
mingw.
|
|
@end itemize
|
|
|
|
Portability problems fixed by Gnulib module @code{stdio} or @code{vprintf-posix}, together with module @code{sigpipe}:
|
|
@itemize
|
|
@item
|
|
When writing to a pipe with no readers, this function fails, instead of
|
|
obeying the current @code{SIGPIPE} handler, on some platforms:
|
|
mingw.
|
|
@end itemize
|
|
|
|
Portability problems not fixed by Gnulib:
|
|
@itemize
|
|
@item
|
|
Attempting to write to a read-only stream fails with @code{EOF} but
|
|
does not set the error flag for @code{ferror} on some platforms:
|
|
glibc 2.13, cygwin 1.7.9.
|
|
@end itemize
|