From 3d7534eae5e5421573e1f7cf76f6339cffeb903d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Manuel=20J=C3=A1quez=20Leal?= Date: Mon, 10 Apr 2017 13:00:44 +0200 Subject: [PATCH] gio-tool: Fix errors format string Compiling with clang 3.8.1-18 (debian, x86_64) I ran across this error: gio-tool.c:40:31: error: format string is not a string literal [-Werror,-Wformat-nonliteral] message = g_strdup_vprintf (format, args); ^~~~~~ gio-tool.c:55:31: error: format string is not a string literal [-Werror,-Wformat-nonliteral] message = g_strdup_vprintf (format, args); ^~~~~~ 2 errors generated. To fix the first one, related with the function print_error(), this patch adds to the function prototype a compiler's attribute. For the second one, since the usage of that function is to print one string and the format is already provided, the patch simplifies the function by no receiving variadic arguments. https://bugzilla.gnome.org/show_bug.cgi?id=781125 --- gio/gio-tool-rename.c | 2 +- gio/gio-tool-save.c | 6 +++--- gio/gio-tool-set.c | 2 +- gio/gio-tool.c | 12 ++---------- gio/gio-tool.h | 5 ++--- 5 files changed, 9 insertions(+), 18 deletions(-) diff --git a/gio/gio-tool-rename.c b/gio/gio-tool-rename.c index 9c3655444..820208f58 100644 --- a/gio/gio-tool-rename.c +++ b/gio/gio-tool-rename.c @@ -85,7 +85,7 @@ handle_rename (int argc, char *argv[], gboolean do_help) if (new_file == NULL) { - print_error (error->message); + print_error ("%s", error->message); g_error_free (error); retval = 1; } diff --git a/gio/gio-tool-save.c b/gio/gio-tool-save.c index dc222422d..3e4497b57 100644 --- a/gio/gio-tool-save.c +++ b/gio/gio-tool-save.c @@ -105,7 +105,7 @@ save (GFile *file) if (written == -1) { save_res = FALSE; - print_error (error->message); + print_error ("%s", error->message); g_error_free (error); goto out; } @@ -116,7 +116,7 @@ save (GFile *file) else if (res < 0) { save_res = FALSE; - print_error (_("Error reading from standard input")); + print_error ("%s", _("Error reading from standard input")); break; } else if (res == 0) @@ -129,7 +129,7 @@ save (GFile *file) if (!close_res) { save_res = FALSE; - print_error (error->message); + print_error ("%s", error->message); g_error_free (error); } diff --git a/gio/gio-tool-set.c b/gio/gio-tool-set.c index ada62c2b1..411c132ad 100644 --- a/gio/gio-tool-set.c +++ b/gio/gio-tool-set.c @@ -192,7 +192,7 @@ handle_set (int argc, char *argv[], gboolean do_help) G_FILE_QUERY_INFO_NONE, NULL, &error)) { - print_error (error->message); + print_error ("%s", error->message); g_error_free (error); g_object_unref (file); return 1; diff --git a/gio/gio-tool.c b/gio/gio-tool.c index 61ca87a41..3b79d21b2 100644 --- a/gio/gio-tool.c +++ b/gio/gio-tool.c @@ -31,7 +31,7 @@ void -print_error (const char *format, ...) +print_error (const gchar *format, ...) { gchar *message; va_list args; @@ -45,21 +45,13 @@ print_error (const char *format, ...) } void -print_file_error (GFile *file, const gchar *format, ...) +print_file_error (GFile *file, const gchar *message) { gchar *uri; - gchar *message; - va_list args; - - va_start (args, format); - message = g_strdup_vprintf (format, args); - va_end (args); uri = g_file_get_uri (file); print_error ("%s: %s", uri, message); g_free (uri); - - g_free (message); } void diff --git a/gio/gio-tool.h b/gio/gio-tool.h index 154f30231..58cc0f4c5 100644 --- a/gio/gio-tool.h +++ b/gio/gio-tool.h @@ -21,10 +21,9 @@ #define __GIO_TOOL_H__ void print_error (const gchar *format, - ...); + ...) G_GNUC_PRINTF (1, 2); void print_file_error (GFile *file, - const gchar *format, - ...); + const gchar *message); void show_help (GOptionContext *context, const char *message);