bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] fprintftime: avoid a warning about ignored fwrite return value


From: Jim Meyering
Subject: [PATCH] fprintftime: avoid a warning about ignored fwrite return value
Date: Wed, 28 Oct 2009 10:34:06 +0100

Here's hoping that POSIX (or ISO C) will eventually fix fputc/fwrite/etc.
so that we don't have to add caveats like what I wrote in the comment below.

As far as I know, date, du --time and uptime are the only clients that
use fprintftime, so even if this can hide a real failure, it's not
*that* big a deal.

>From 119ae5514681e42839f83a4993021a222ec45daa Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Wed, 28 Oct 2009 10:24:09 +0100
Subject: [PATCH] fprintftime: avoid a warning about ignored fwrite return value

* lib/strftime.c [FPRINTFTIME]: Include "ignore-value.h".
(cpy) [FPRINTFTIME]: Ignore fwrite failure, even though technically,
that is unsafe.
* modules/fprintftime (Depends-on): Add ignore-value.
---
 ChangeLog           |    6 ++++++
 lib/strftime.c      |   11 ++++++++++-
 modules/fprintftime |    1 +
 3 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 54a79e8..ed3e6bd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2009-10-28  Jim Meyering  <address@hidden>

+       fprintftime: avoid a warning about ignored fwrite return value
+       * lib/strftime.c [FPRINTFTIME]: Include "ignore-value.h".
+       (cpy) [FPRINTFTIME]: Ignore fwrite failure, even though technically,
+       that is unsafe.
+       * modules/fprintftime (Depends-on): Add ignore-value.
+
        exclude: avoid an unwarranted warning
        * lib/exclude.c (excluded_file_name): Initialize "rc" before switch.

diff --git a/lib/strftime.c b/lib/strftime.c
index fff5d38..7f06d6f 100644
--- a/lib/strftime.c
+++ b/lib/strftime.c
@@ -31,6 +31,7 @@
 # else
 #  include "strftime.h"
 # endif
+# include "ignore-value.h"
 #endif

 #include <ctype.h>
@@ -203,7 +204,15 @@ extern char *tzname[];
         else if (to_uppcase)                                                 \
           fwrite_uppcase (p, (s), _n);                                       \
         else                                                                 \
-          fwrite ((s), _n, 1, p))
+          {                                                                  \
+            /* We are ignoring the value of fwrite here, in spite of the     \
+               fact that technically, that may not be valid: the fwrite      \
+               specification in POSIX 2008 defers to that of fputc, which    \
+               is intended to be consistent with the one from ISO C,         \
+               which permits failure due to ENOMEM *without* setting the     \
+               stream's error indicator.  */                                 \
+            ignore_value (fwrite ((s), _n, 1, p)));                          \
+          }
 #else
 # define cpy(n, s)                                                           \
     add ((n),                                                                \
diff --git a/modules/fprintftime b/modules/fprintftime
index 4333a31..87598ef 100644
--- a/modules/fprintftime
+++ b/modules/fprintftime
@@ -7,6 +7,7 @@ lib/fprintftime.c
 m4/fprintftime.m4

 Depends-on:
+ignore-value
 strftime

 configure.ac:
--
1.6.5.2.344.ga473e




reply via email to

[Prev in Thread] Current Thread [Next in Thread]