Hash :
a9525771
Author :
Date :
2024-12-27T23:24:51
Rename module stdio to stdio-h. * modules/stdio-h: Renamed from modules/stdio. * modules/stdio-h-tests: Renamed from modules/stdio-tests. * modules/stdio-h-c++-tests: Renamed from modules/stdio-c++-tests. * tests/test-stdio-h.c: Renamed from tests/test-stdio.c. * tests/test-stdio-h-c++.cc: Renamed from tests/test-stdio-c++.cc. * tests/test-stdio-h-c++2.cc: Renamed from tests/test-stdio-c++2.cc. * doc/posix-headers/stdio.texi: Update. * doc/posix-functions/fgetc.texi: Update. * doc/posix-functions/fgets.texi: Update. * doc/posix-functions/fprintf.texi: Update. * doc/posix-functions/fputc.texi: Update. * doc/posix-functions/fputs.texi: Update. * doc/posix-functions/fread.texi: Update. * doc/posix-functions/fscanf.texi: Update. * doc/posix-functions/fwrite.texi: Update. * doc/posix-functions/getc.texi: Update. * doc/posix-functions/getchar.texi: Update. * doc/posix-functions/printf.texi: Update. * doc/posix-functions/putc.texi: Update. * doc/posix-functions/putchar.texi: Update. * doc/posix-functions/puts.texi: Update. * doc/posix-functions/read.texi: Update. * doc/posix-functions/scanf.texi: Update. * doc/posix-functions/vfprintf.texi: Update. * doc/posix-functions/vprintf.texi: Update. * doc/posix-functions/write.texi: Update. * modules/* (Depends-on): Update. * modules/stdio: New file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
@node vfprintf
@subsection @code{vfprintf}
@findex vfprintf
POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9799919799/functions/vfprintf.html}
Gnulib module: vfprintf-posix or vfprintf-gnu or stdio-h, nonblocking, sigpipe
@mindex vfprintf-posix
@mindex vfprintf-gnu
@mindex stdio-h
@mindex nonblocking
@mindex sigpipe
Portability problems fixed by either Gnulib module @code{vfprintf-posix} or @code{vfprintf-gnu}:
@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, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.
@item
This function does not support size specifiers as in C23 (@code{w8},
@code{w16}, @code{w32}, @code{w64}, @code{wf8}, @code{wf16}, @code{wf32},
@code{wf64}) on some platforms:
glibc 2.37, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
@item
printf of @samp{long double} numbers is unsupported on some platforms:
mingw, MSVC 14.
@item
printf @code{"%f"}, @code{"%e"}, @code{"%g"} of Infinity and NaN yields an
incorrect result on some platforms:
AIX 7.3, Solaris 11.4, mingw, MSVC 14.
@item
This function does not support the @samp{a} and @samp{A} directives on some
platforms:
FreeBSD 5.2.1, OpenBSD 4.0, AIX 5.2, HP-UX 11,
Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.
@item
This function does not support the @samp{b} directive, required by ISO C23,
on some platforms:
glibc 2.34, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5,
AIX 7.3, HP-UX 11, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 14, Android 9.0.
@item
This function does not support the @samp{F} directive on some platforms:
NetBSD 3.0, AIX 5.1, HP-UX 11.23, Solaris 9,
Cygwin 1.5.x, mingw, MSVC 14.
@item
This function does not support the @samp{ls} directive on some platforms:
OpenBSD 4.0, Cygwin 1.5.x, Haiku.
@item
This function does not support precisions in the @samp{ls} directive correctly
on some platforms:
Solaris 11.4.
@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, MSVC 14.
@item
This function doesn't support the @code{'} flag on some platforms:
NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.
@item
This function does not round the argument of the @samp{a} directive correctly
on some platforms:
macOS 14, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4.
@item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes, or wrong capitalization) on some platforms:
Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 7.3, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.
@item
printf @code{"%#.0x"} or @code{"%#.0X"} with a zero argument yields an
incorrect result (non-empty) on some platforms:
Mac OS X 10.6.
@item
This function does not support precisions larger than 512 or 1024 in integer,
floating-point and pointer output on some platforms:
AIX 7.1, Solaris 10/x86, mingw, MSVC/clang.
@item
This function mishandles large floating point precisions
(for example, formatting 1.0 with @samp{"%.511f"})
on some platforms:
Solaris 10.
@item
This function produces wrong output for the @samp{lc} directive with a NUL
wide character argument on some platforms:
musl libc 1.2.4.
@item
This function can crash in out-of-memory conditions on some platforms:
FreeBSD 14.0, NetBSD 5.0.
@end itemize
Portability problems fixed by Gnulib module @code{vfprintf-gnu}:
@itemize
@item
This function does not support the @samp{B} directive on some platforms:
glibc 2.34, musl libc, macOS 14, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.5, AIX 7.3, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC, Android 9.0.
@end itemize
@mindex printf-with-n-directive
Portability problems fixed by either Gnulib module @code{vfprintf-posix} or @code{vfprintf-gnu}
and additionally the Gnulib module @code{printf-with-n-directive}:
@itemize
@item
This function does not support the @samp{n} directive on some platforms:
glibc when used with @code{_FORTIFY_SOURCE >= 2} (set by default on Ubuntu),
macOS 14, OpenBSD, MSVC 14, Android.
@end itemize
Portability problems fixed by Gnulib module @code{stdio-h} or @code{vfprintf-posix} or @code{vfprintf-gnu}, 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, MSVC 14.
@end itemize
Portability problems fixed by Gnulib module @code{stdio-h} or @code{vfprintf-posix} or @code{vfprintf-gnu}, 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, MSVC 14.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
The @code{%m} directive is not portable, use @code{%s} mapped to an
argument of @code{strerror(errno)} (or a version of @code{strerror_r})
instead.
@item
Formatting noncanonical @samp{long double} numbers produces
nonmeaningful results on some platforms:
glibc and others, on x86, x86_64, IA-64 CPUs.
@item
When formatting an integer with grouping flag, this function inserts thousands
separators even in the "C" locale on some platforms:
NetBSD 5.1.
@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