# HG changeset patch # User Jim Meyering # Date 1192825806 -7200 # Node ID dbb64cb4aed937fa7c1306d3855751fe0f009a51 # Parent 73ad59013febaba9e5addb708f9502a833c22fac * lib/xprintf.c: Don't bother testing specific errno values. Just test ferror. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ 2007-10-19 Jim Meyering * 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. diff --git a/lib/xprintf.c b/lib/xprintf.c --- 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;