changeset 39983:db717b5315cf

docs: mention printf %m considerations gcc -Wformat does NOT flag printf("%m") on a BSD system, even though it prints only "m" instead of the desired GNU/Linux behavior of the current errno value (you have to use -Wpedantic to flag it, but that's a rather heavy hammer). Still, it's easy enough (even if verbose) to write out strerror() usage directly, to the point that gnulib will probably never provide a module to guarantee %m everywhere. See also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88270 * doc/glibc-functions/asprintf.texi (asprintf): Document that %m is not portable, and is easy enough to work around. * doc/glibc-functions/obstack_printf.texi (obstack_printf): Likewise. * doc/glibc-functions/obstack_vprintf.texi (obstack_vprintf): Likewise. * doc/glibc-functions/vasprintf.texi (vasprintf): Likewise. * doc/posix-functions/dprintf.texi (dprintf): Likewise. * doc/posix-functions/fprintf.texi (fprintf): Likewise. * doc/posix-functions/fwprintf.texi (fwprintf): Likewise. * doc/posix-functions/printf.texi (printf): Likewise. * doc/posix-functions/snprintf.texi (snprintf): Likewise. * doc/posix-functions/sprintf.texi (sprintf): Likewise. * doc/posix-functions/swprintf.texi (swprintf): 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/vsnprintf.texi (vsnprintf): Likewise. * doc/posix-functions/vsprintf.texi (vsprintf): Likewise. * doc/posix-functions/vswprintf.texi (vswprintf): Likewise. * doc/posix-functions/vwprintf.texi (vwprintf): Likewise. * doc/posix-functions/wprintf.texi (wprintf): Likewise. Signed-off-by: Eric Blake <eblake@redhat.com>
author Eric Blake <eblake@redhat.com>
date Thu, 29 Nov 2018 13:33:28 -0600
parents 4f5113a573fc
children 235f675aabb4
files ChangeLog doc/glibc-functions/asprintf.texi doc/glibc-functions/obstack_printf.texi doc/glibc-functions/obstack_vprintf.texi doc/glibc-functions/vasprintf.texi doc/posix-functions/dprintf.texi doc/posix-functions/fprintf.texi doc/posix-functions/fwprintf.texi doc/posix-functions/printf.texi doc/posix-functions/snprintf.texi doc/posix-functions/sprintf.texi doc/posix-functions/swprintf.texi doc/posix-functions/vdprintf.texi doc/posix-functions/vfprintf.texi doc/posix-functions/vfwprintf.texi doc/posix-functions/vprintf.texi doc/posix-functions/vsnprintf.texi doc/posix-functions/vsprintf.texi doc/posix-functions/vswprintf.texi doc/posix-functions/vwprintf.texi doc/posix-functions/wprintf.texi
diffstat 21 files changed, 105 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Nov 29 08:26:00 2018 -0800
+++ b/ChangeLog	Thu Nov 29 13:33:28 2018 -0600
@@ -1,3 +1,28 @@
+2018-11-29  Eric Blake  <eblake@redhat.com>
+
+	docs: mention printf %m considerations
+	* doc/glibc-functions/asprintf.texi (asprintf): Document that %m
+	is not portable, and is easy enough to work around.
+	* doc/glibc-functions/obstack_printf.texi (obstack_printf): Likewise.
+	* doc/glibc-functions/obstack_vprintf.texi (obstack_vprintf): Likewise.
+	* doc/glibc-functions/vasprintf.texi (vasprintf): Likewise.
+	* doc/posix-functions/dprintf.texi (dprintf): Likewise.
+	* doc/posix-functions/fprintf.texi (fprintf): Likewise.
+	* doc/posix-functions/fwprintf.texi (fwprintf): Likewise.
+	* doc/posix-functions/printf.texi (printf): Likewise.
+	* doc/posix-functions/snprintf.texi (snprintf): Likewise.
+	* doc/posix-functions/sprintf.texi (sprintf): Likewise.
+	* doc/posix-functions/swprintf.texi (swprintf): 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/vsnprintf.texi (vsnprintf): Likewise.
+	* doc/posix-functions/vsprintf.texi (vsprintf): Likewise.
+	* doc/posix-functions/vswprintf.texi (vswprintf): Likewise.
+	* doc/posix-functions/vwprintf.texi (vwprintf): Likewise.
+	* doc/posix-functions/wprintf.texi (wprintf): Likewise.
+
 2018-11-29  Akim Demaille  <akim@lrde.epita.fr>
 
 	bitset: rename ebitset/expandable.* as tbitset/table.*
--- a/doc/glibc-functions/asprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/glibc-functions/asprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -64,4 +64,8 @@
 
 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.
 @end itemize
--- a/doc/glibc-functions/obstack_printf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/glibc-functions/obstack_printf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -77,4 +77,8 @@
 
 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.
 @end itemize
--- a/doc/glibc-functions/obstack_vprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/glibc-functions/obstack_vprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -77,4 +77,8 @@
 
 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.
 @end itemize
--- a/doc/glibc-functions/vasprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/glibc-functions/vasprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -64,4 +64,8 @@
 
 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.
 @end itemize
--- a/doc/posix-functions/dprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/dprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -36,6 +36,10 @@
 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.
--- a/doc/posix-functions/fprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/fprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -91,6 +91,10 @@
 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.
--- a/doc/posix-functions/fwprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/fwprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -13,6 +13,10 @@
 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
 This function is missing on some platforms:
 NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Interix 3.5, BeOS.
 @item
--- a/doc/posix-functions/printf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/printf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -91,6 +91,10 @@
 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.
--- a/doc/posix-functions/snprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/snprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -99,6 +99,10 @@
 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.
--- a/doc/posix-functions/sprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/sprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -74,6 +74,10 @@
 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.
--- a/doc/posix-functions/swprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/swprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -13,6 +13,10 @@
 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
 This function is missing on some platforms:
 NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Interix 3.5, BeOS.
 @item
--- a/doc/posix-functions/vdprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/vdprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -50,6 +50,10 @@
 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.
--- a/doc/posix-functions/vfprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/vfprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -91,6 +91,10 @@
 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.
--- a/doc/posix-functions/vfwprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/vfwprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -13,6 +13,10 @@
 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
 This function is missing on some platforms:
 NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Interix 3.5, BeOS.
 @item
--- a/doc/posix-functions/vprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/vprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -91,6 +91,10 @@
 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.
--- a/doc/posix-functions/vsnprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/vsnprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -96,6 +96,10 @@
 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.
--- a/doc/posix-functions/vsprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/vsprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -74,6 +74,10 @@
 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.
--- a/doc/posix-functions/vswprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/vswprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -13,6 +13,10 @@
 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
 This function is missing on some platforms:
 NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Interix 3.5, BeOS.
 @item
--- a/doc/posix-functions/vwprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/vwprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -13,6 +13,10 @@
 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
 This function is missing on some platforms:
 NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x,
 Interix 3.5, BeOS, Cygwin 1.7.
--- a/doc/posix-functions/wprintf.texi	Thu Nov 29 08:26:00 2018 -0800
+++ b/doc/posix-functions/wprintf.texi	Thu Nov 29 13:33:28 2018 -0600
@@ -13,6 +13,10 @@
 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
 This function is missing on some platforms:
 NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.6, Interix
 3.5, BeOS.