Hello there,

a foolish use of "-Wformat=error" with gnulib uncovered
a case of empty format strings in "lib/error.c". The use
of clang with FreeBSD-11 uncovered this. It is seemingly
the only format error from gnulib that affects Inetutils.

Best regards, on behalf of GNU Inetutils
  Mats Erik Andersson
>From 03ecb1ceb85140566e64fe94a91fd85c258a43d6 Mon Sep 17 00:00:00 2001
From: Mats Erik Andersson <g...@gisladisker.se>
Date: Fri, 25 Apr 2014 21:45:28 +0200
Subject: [PATCH] error: Conditionally empty format string.

---
 ChangeLog   | 9 +++++++++
 lib/error.c | 7 +++----
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 4285635..386e1f3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2014-04-25  Mats Erik Andersson  <g...@gisladisker.se>
+
+	error: conditionally empty format string.
+	Arguments are always present, though.  This is caught
+	by "-Wformat=error".
+
+	* lib/error.c (error_at_line): Replace ternary, inline
+	test for "file_name != NULL" by a regular if-statement.
+
 2014-04-18  Pádraig Brady  <p...@draigbrady.com>
 
 	gitlog-to-changelog: revert inclusion of git-log-fix file
diff --git a/lib/error.c b/lib/error.c
index 31109df..8bca36e 100644
--- a/lib/error.c
+++ b/lib/error.c
@@ -373,12 +373,11 @@ error_at_line (int status, int errnum, const char *file_name,
 #endif
     }
 
+  if (file_name != NULL)
 #if _LIBC
-  __fxprintf (NULL, file_name != NULL ? "%s:%d: " : " ",
-              file_name, line_number);
+    __fxprintf (NULL, "%s:%d: ", file_name, line_number);
 #else
-  fprintf (stderr, file_name != NULL ? "%s:%d: " : " ",
-           file_name, line_number);
+    fprintf (stderr, "%s:%d: ", file_name, line_number);
 #endif
 
   va_start (args, message);
-- 
1.9.2

Reply via email to