changeset 9366:dbb64cb4aed9

* lib/xprintf.c: Don't bother testing specific errno values. Just test ferror.
author Jim Meyering <meyering@redhat.com>
date Fri, 19 Oct 2007 22:30:06 +0200
parents 73ad59013feb
children 930efddef3ad
files ChangeLog lib/xprintf.c
diffstat 2 files changed, 7 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
 2007-10-19  Jim Meyering  <meyering@redhat.com>
 
 	* lib/xprintf.c (xprintf, xfprintf): Test err < 0, not just "err".
+	Don't bother testing specific errno values.  Just test ferror.
 
 	New module: xprintf
 	* modules/xprintf, lib/xprintf.c, lib/xprintf.h: New files.
--- a/lib/xprintf.c
+++ b/lib/xprintf.c
@@ -29,29 +29,29 @@
 
 /* written by Jim Meyering */
 
-/* Just like printf, but call error if it fails for any reason
-   for which printf does not set the stream error indicator.  */
+/* Just like printf, but call error if it fails without setting
+   the error indicator.  */
 int
 xprintf (char const *restrict format, ...)
 {
   va_list args;
   va_start (args, format);
   int err = vprintf (format, args);
-  if (err < 0 && (errno == EILSEQ || errno == EINVAL || errno == ENOMEM))
+  if (err < 0 && ! ferror (stdout))
     error (exit_failure, errno, gettext ("write error"));
 
   return err;
 }
 
-/* Just like fprintf, but call error if it fails for any reason
-   for which printf does not set the stream error indicator.  */
+/* Just like fprintf, but call error if it fails without setting
+   the error indicator.  */
 int
 xfprintf (FILE *restrict stream, char const *restrict format, ...)
 {
   va_list args;
   va_start (args, format);
   int err = vfprintf (stream, format, args);
-  if (err < 0 && (errno == EILSEQ || errno == EINVAL || errno == ENOMEM))
+  if (err < 0 && ! ferror (stream))
     error (exit_failure, errno, gettext ("write error"));
 
   return err;