From c219181cb20a57988ed8426be2a5da8acf6aa07c Mon Sep 17 00:00:00 2001 From: Henrique Dante de Almeida Date: Sun, 13 Jan 2013 14:05:14 -0200 Subject: [PATCH] Add G_GNUC_PRINTF on all functions with format strings This allows compilation with clang without errors, even when -Wformat-nonliteral is active (as long as there are no real cases of non literal formatting). https://bugzilla.gnome.org/show_bug.cgi?id=691608 --- gio/gdbusauth.c | 1 + gio/gdbusauthmechanismsha1.c | 1 + gio/gdbusdaemon.c | 1 + gio/gdbuserror.h | 4 ++-- gio/gdbusmessage.c | 1 + gio/gdbusmethodinvocation.h | 5 +++-- gio/gsimpleasyncresult.h | 5 +++-- gio/gtask.h | 2 +- glib/gerror.c | 1 + glib/gerror.h | 2 +- glib/gmarkup.c | 2 ++ glib/gmarkup.h | 2 +- glib/gmessages.h | 4 ++-- glib/gprintf.h | 8 ++++---- glib/gstrfuncs.h | 3 ++- glib/gstring.h | 6 ++++-- glib/gutils.h | 3 ++- glib/gvariant-parser.c | 4 ++++ glib/tests/markup-escape.c | 1 + glib/tests/string.c | 1 + glib/tests/test-printf.c | 1 + 21 files changed, 39 insertions(+), 19 deletions(-) diff --git a/gio/gdbusauth.c b/gio/gdbusauth.c index 962a218c0..dd4cc2ca5 100644 --- a/gio/gdbusauth.c +++ b/gio/gdbusauth.c @@ -46,6 +46,7 @@ #include "glibintl.h" +G_GNUC_PRINTF(1, 2) static void debug_print (const gchar *message, ...) { diff --git a/gio/gdbusauthmechanismsha1.c b/gio/gdbusauthmechanismsha1.c index 4729208e0..5e8b6c059 100644 --- a/gio/gdbusauthmechanismsha1.c +++ b/gio/gdbusauthmechanismsha1.c @@ -469,6 +469,7 @@ keyring_lookup_entry (const gchar *cookie_context, } /* function for logging important events that the system administrator should take notice of */ +G_GNUC_PRINTF(1, 2) static void _log (const gchar *message, ...) diff --git a/gio/gdbusdaemon.c b/gio/gdbusdaemon.c index 35a724c37..23937710c 100644 --- a/gio/gdbusdaemon.c +++ b/gio/gdbusdaemon.c @@ -1346,6 +1346,7 @@ handle_start_service_by_name (_GFreedesktopDBus *object, return TRUE; } +G_GNUC_PRINTF(5, 6) static void return_error (Client *client, GDBusMessage *message, GQuark domain, diff --git a/gio/gdbuserror.h b/gio/gdbuserror.h index d32b92893..c1d3e9c5e 100644 --- a/gio/gdbuserror.h +++ b/gio/gdbuserror.h @@ -87,12 +87,12 @@ void g_dbus_error_set_dbus_error (GError **error, const gchar *dbus_error_name, const gchar *dbus_error_message, const gchar *format, - ...); + ...) G_GNUC_PRINTF(4, 5); void g_dbus_error_set_dbus_error_valist (GError **error, const gchar *dbus_error_name, const gchar *dbus_error_message, const gchar *format, - va_list var_args); + va_list var_args) G_GNUC_PRINTF(4, 0); gchar *g_dbus_error_encode_gerror (const GError *error); G_END_DECLS diff --git a/gio/gdbusmessage.c b/gio/gdbusmessage.c index ecbc03385..9181029b4 100644 --- a/gio/gdbusmessage.c +++ b/gio/gdbusmessage.c @@ -827,6 +827,7 @@ g_dbus_message_new_method_error_literal (GDBusMessage *method_call_message, * * Since: 2.26 */ +G_GNUC_PRINTF(3, 0) GDBusMessage * g_dbus_message_new_method_error_valist (GDBusMessage *method_call_message, const gchar *error_name, diff --git a/gio/gdbusmethodinvocation.h b/gio/gdbusmethodinvocation.h index 9146b21a5..29cfe63a1 100644 --- a/gio/gdbusmethodinvocation.h +++ b/gio/gdbusmethodinvocation.h @@ -55,12 +55,13 @@ void g_dbus_method_invocation_return_error (GDBusMetho GQuark domain, gint code, const gchar *format, - ...); + ...) G_GNUC_PRINTF(4, 5); void g_dbus_method_invocation_return_error_valist (GDBusMethodInvocation *invocation, GQuark domain, gint code, const gchar *format, - va_list var_args); + va_list var_args) + G_GNUC_PRINTF(4, 0); void g_dbus_method_invocation_return_error_literal (GDBusMethodInvocation *invocation, GQuark domain, gint code, diff --git a/gio/gsimpleasyncresult.h b/gio/gsimpleasyncresult.h index 623336908..1ea98f405 100644 --- a/gio/gsimpleasyncresult.h +++ b/gio/gsimpleasyncresult.h @@ -110,7 +110,8 @@ void g_simple_async_result_set_error_va (GSimpleAsyncResult GQuark domain, gint code, const char *format, - va_list args); + va_list args) + G_GNUC_PRINTF(4, 0); gboolean g_simple_async_result_is_valid (GAsyncResult *result, GObject *source, gpointer source_tag); @@ -121,7 +122,7 @@ void g_simple_async_report_error_in_idle (GObject *object, GQuark domain, gint code, const char *format, - ...); + ...) G_GNUC_PRINTF(6, 7); void g_simple_async_report_gerror_in_idle (GObject *object, GAsyncReadyCallback callback, gpointer user_data, diff --git a/gio/gtask.h b/gio/gtask.h index bb032267b..d5a2d774f 100644 --- a/gio/gtask.h +++ b/gio/gtask.h @@ -61,7 +61,7 @@ void g_task_report_new_error (gpointer source_object, GQuark domain, gint code, const char *format, - ...); + ...) G_GNUC_PRINTF(7, 8); GLIB_AVAILABLE_IN_2_36 void g_task_set_task_data (GTask *task, diff --git a/glib/gerror.c b/glib/gerror.c index e6ce3c072..2adbdf84d 100644 --- a/glib/gerror.c +++ b/glib/gerror.c @@ -645,6 +645,7 @@ g_clear_error (GError **err) } } +G_GNUC_PRINTF(2, 0) static void g_error_add_prefix (gchar **string, const gchar *format, diff --git a/glib/gerror.h b/glib/gerror.h index f9020d62c..8b5de288b 100644 --- a/glib/gerror.h +++ b/glib/gerror.h @@ -60,7 +60,7 @@ GError* g_error_new_literal (GQuark domain, GError* g_error_new_valist (GQuark domain, gint code, const gchar *format, - va_list args); + va_list args) G_GNUC_PRINTF(3, 0); void g_error_free (GError *error); GError* g_error_copy (const GError *error); diff --git a/glib/gmarkup.c b/glib/gmarkup.c index 11f68de6f..bf7c00856 100644 --- a/glib/gmarkup.c +++ b/glib/gmarkup.c @@ -403,6 +403,7 @@ set_error_literal (GMarkupParseContext *context, g_propagate_error (error, tmp_error); } +G_GNUC_PRINTF(4, 5) static void set_error (GMarkupParseContext *context, GError **error, @@ -564,6 +565,7 @@ utf8_str (const gchar *utf8, return buf; } +G_GNUC_PRINTF(5, 6) static void set_unescape_error (GMarkupParseContext *context, GError **error, diff --git a/glib/gmarkup.h b/glib/gmarkup.h index d26c2adcc..d0eda4f97 100644 --- a/glib/gmarkup.h +++ b/glib/gmarkup.h @@ -214,7 +214,7 @@ gchar* g_markup_escape_text (const gchar *text, gchar *g_markup_printf_escaped (const char *format, ...) G_GNUC_PRINTF (1, 2); gchar *g_markup_vprintf_escaped (const char *format, - va_list args); + va_list args) G_GNUC_PRINTF(1, 0); typedef enum { diff --git a/glib/gmessages.h b/glib/gmessages.h index 777cda238..d0c19307a 100644 --- a/glib/gmessages.h +++ b/glib/gmessages.h @@ -46,7 +46,7 @@ G_BEGIN_DECLS /* calculate a string size, guaranteed to fit format + args. */ gsize g_printf_string_upper_bound (const gchar* format, - va_list args); + va_list args) G_GNUC_PRINTF(1, 0); /* Log level shift offset for user defined * log levels (0-7 are used by GLib). @@ -101,7 +101,7 @@ void g_log (const gchar *log_domain, void g_logv (const gchar *log_domain, GLogLevelFlags log_level, const gchar *format, - va_list args); + va_list args) G_GNUC_PRINTF(3, 0); GLogLevelFlags g_log_set_fatal_mask (const gchar *log_domain, GLogLevelFlags fatal_mask); GLogLevelFlags g_log_set_always_fatal (GLogLevelFlags fatal_mask); diff --git a/glib/gprintf.h b/glib/gprintf.h index d96870fb4..2ed5ecc96 100644 --- a/glib/gprintf.h +++ b/glib/gprintf.h @@ -36,16 +36,16 @@ gint g_sprintf (gchar *string, ...) G_GNUC_PRINTF (2, 3); gint g_vprintf (gchar const *format, - va_list args); + va_list args) G_GNUC_PRINTF(1, 0); gint g_vfprintf (FILE *file, gchar const *format, - va_list args); + va_list args) G_GNUC_PRINTF(2, 0); gint g_vsprintf (gchar *string, gchar const *format, - va_list args); + va_list args) G_GNUC_PRINTF(2, 0); gint g_vasprintf (gchar **string, gchar const *format, - va_list args); + va_list args) G_GNUC_PRINTF(2, 0); G_END_DECLS diff --git a/glib/gstrfuncs.h b/glib/gstrfuncs.h index 3142485a2..e0752d308 100644 --- a/glib/gstrfuncs.h +++ b/glib/gstrfuncs.h @@ -188,7 +188,8 @@ gchar* g_strdup (const gchar *str) G_GNUC_MALLOC; gchar* g_strdup_printf (const gchar *format, ...) G_GNUC_PRINTF (1, 2) G_GNUC_MALLOC; gchar* g_strdup_vprintf (const gchar *format, - va_list args) G_GNUC_MALLOC; + va_list args) G_GNUC_PRINTF(1, 0) + G_GNUC_MALLOC; gchar* g_strndup (const gchar *str, gsize n) G_GNUC_MALLOC; gchar* g_strnfill (gsize length, diff --git a/glib/gstring.h b/glib/gstring.h index a97aa4e8a..c6a11aec1 100644 --- a/glib/gstring.h +++ b/glib/gstring.h @@ -109,13 +109,15 @@ GString* g_string_ascii_down (GString *string); GString* g_string_ascii_up (GString *string); void g_string_vprintf (GString *string, const gchar *format, - va_list args); + va_list args) + G_GNUC_PRINTF(2, 0); void g_string_printf (GString *string, const gchar *format, ...) G_GNUC_PRINTF (2, 3); void g_string_append_vprintf (GString *string, const gchar *format, - va_list args); + va_list args) + G_GNUC_PRINTF(2, 0); void g_string_append_printf (GString *string, const gchar *format, ...) G_GNUC_PRINTF (2, 3); diff --git a/glib/gutils.h b/glib/gutils.h index bddde24a6..e7f375690 100644 --- a/glib/gutils.h +++ b/glib/gutils.h @@ -187,7 +187,8 @@ gint g_snprintf (gchar *string, gint g_vsnprintf (gchar *string, gulong n, gchar const *format, - va_list args); + va_list args) + G_GNUC_PRINTF(3, 0); void g_nullify_pointer (gpointer *nullify_location); diff --git a/glib/gvariant-parser.c b/glib/gvariant-parser.c index e2e85abb0..d5c036a61 100644 --- a/glib/gvariant-parser.c +++ b/glib/gvariant-parser.c @@ -78,6 +78,7 @@ typedef struct gint start, end; } SourceRef; +G_GNUC_PRINTF(5, 0) static void parser_set_error_va (GError **error, SourceRef *location, @@ -105,6 +106,7 @@ parser_set_error_va (GError **error, g_string_free (msg, TRUE); } +G_GNUC_PRINTF(5, 6) static void parser_set_error (GError **error, SourceRef *location, @@ -130,6 +132,7 @@ typedef struct } TokenStream; +G_GNUC_PRINTF(5, 6) static void token_stream_set_error (TokenStream *stream, GError **error, @@ -525,6 +528,7 @@ ast_free (AST *ast) ast->class->free (ast); } +G_GNUC_PRINTF(5, 6) static void ast_set_error (AST *ast, GError **error, diff --git a/glib/tests/markup-escape.c b/glib/tests/markup-escape.c index 0cd90ef23..b2de289c2 100644 --- a/glib/tests/markup-escape.c +++ b/glib/tests/markup-escape.c @@ -96,6 +96,7 @@ unichar_test (gconstpointer d) escape_test (&t); } +G_GNUC_PRINTF(1, 3) static void test_format (const gchar *format, const gchar *expected, diff --git a/glib/tests/string.c b/glib/tests/string.c index 454574b35..ba55d3df9 100644 --- a/glib/tests/string.c +++ b/glib/tests/string.c @@ -106,6 +106,7 @@ test_string_new (void) g_string_free (string2, TRUE); } +G_GNUC_PRINTF(2, 3) static void my_string_printf (GString *string, const gchar *format, diff --git a/glib/tests/test-printf.c b/glib/tests/test-printf.c index 10d0a1d4a..dbfc8fcbc 100644 --- a/glib/tests/test-printf.c +++ b/glib/tests/test-printf.c @@ -942,6 +942,7 @@ _Pragma ("GCC diagnostic pop") #endif } +G_GNUC_PRINTF(1, 2) static gsize upper_bound (const gchar *format, ...) {