From bdeeebfdd4c0888179b031743f8aec33d8b591d5 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 20 Feb 2020 18:20:04 +0100 Subject: [PATCH] enable and fix -Werror=suggest-attribute=format --- meson.build | 1 + spa/include/spa/support/log-impl.h | 4 ++-- spa/plugins/support/logger.c | 4 ++-- src/pipewire/core.h | 7 +++++-- src/pipewire/private.h | 4 ++-- src/pipewire/properties.h | 2 +- src/tools/pw-dot.c | 11 +++++------ 7 files changed, 18 insertions(+), 15 deletions(-) diff --git a/meson.build b/meson.build index 1516efb2e..e08f93afe 100644 --- a/meson.build +++ b/meson.build @@ -52,6 +52,7 @@ if cc.get_id() == 'gcc' '-Wimplicit-fallthrough', '-Wpointer-arith', '-Wformat-security', + '-Werror=suggest-attribute=format', # '-DSPA_DEBUG_MEMCPY', # '-DFASTPATH', language : 'c') diff --git a/spa/include/spa/support/log-impl.h b/spa/include/spa/support/log-impl.h index 618628668..f0f424741 100644 --- a/spa/include/spa/support/log-impl.h +++ b/spa/include/spa/support/log-impl.h @@ -34,7 +34,7 @@ extern "C" { #include #include -static inline void spa_log_impl_logv(void *object, +static inline SPA_PRINTF_FUNC(6, 0) void spa_log_impl_logv(void *object, enum spa_log_level level, const char *file, int line, @@ -50,7 +50,7 @@ static inline void spa_log_impl_logv(void *object, levels[level], strrchr(file, '/') + 1, line, func, text); fputs(location, stderr); } -static inline void spa_log_impl_log(void *object, +static inline SPA_PRINTF_FUNC(6,7) void spa_log_impl_log(void *object, enum spa_log_level level, const char *file, int line, diff --git a/spa/plugins/support/logger.c b/spa/plugins/support/logger.c index b096c873f..dac57611a 100644 --- a/spa/plugins/support/logger.c +++ b/spa/plugins/support/logger.c @@ -63,7 +63,7 @@ struct impl { unsigned int timestamp:1; }; -static void +static SPA_PRINTF_FUNC(6,0) void impl_log_logv(void *object, enum spa_log_level level, const char *file, @@ -125,7 +125,7 @@ impl_log_logv(void *object, } -static void +static SPA_PRINTF_FUNC(6,7) void impl_log_log(void *object, enum spa_log_level level, const char *file, diff --git a/src/pipewire/core.h b/src/pipewire/core.h index 57ec6bc73..f56e1c4ef 100644 --- a/src/pipewire/core.h +++ b/src/pipewire/core.h @@ -316,7 +316,9 @@ struct pw_core_methods { #define pw_core_pong(c,...) pw_core_method(c,pong,0,__VA_ARGS__) #define pw_core_error(c,...) pw_core_method(c,error,0,__VA_ARGS__) -static inline int + +static inline +SPA_PRINTF_FUNC(5, 0) int pw_core_errorv(struct pw_core *core, uint32_t id, int seq, int res, const char *message, va_list args) { @@ -326,7 +328,8 @@ pw_core_errorv(struct pw_core *core, uint32_t id, int seq, return pw_core_error(core, id, seq, res, buffer); } -static inline int +static inline +SPA_PRINTF_FUNC(5, 6) int pw_core_errorf(struct pw_core *core, uint32_t id, int seq, int res, const char *message, ...) { diff --git a/src/pipewire/private.h b/src/pipewire/private.h index 0312f5f91..e69457178 100644 --- a/src/pipewire/private.h +++ b/src/pipewire/private.h @@ -208,7 +208,7 @@ struct pw_global { #define pw_core_resource_add_mem(r,...) pw_core_resource(r,add_mem,0,__VA_ARGS__) #define pw_core_resource_remove_mem(r,...) pw_core_resource(r,remove_mem,0,__VA_ARGS__) -static inline void +static inline SPA_PRINTF_FUNC(5,0) void pw_core_resource_errorv(struct pw_resource *resource, uint32_t id, int seq, int res, const char *message, va_list args) { @@ -218,7 +218,7 @@ pw_core_resource_errorv(struct pw_resource *resource, uint32_t id, int seq, pw_core_resource_error(resource, id, seq, res, buffer); } -static inline void +static inline SPA_PRINTF_FUNC(5,6) void pw_core_resource_errorf(struct pw_resource *resource, uint32_t id, int seq, int res, const char *message, ...) { diff --git a/src/pipewire/properties.h b/src/pipewire/properties.h index 2dfcc3bca..4574b1fcc 100644 --- a/src/pipewire/properties.h +++ b/src/pipewire/properties.h @@ -83,7 +83,7 @@ pw_properties_setf(struct pw_properties *properties, const char *key, const char *format, ...) SPA_PRINTF_FUNC(3, 4); int pw_properties_setva(struct pw_properties *properties, - const char *key, const char *format, va_list args); + const char *key, const char *format, va_list args) SPA_PRINTF_FUNC(3,0); const char * pw_properties_get(const struct pw_properties *properties, const char *key); diff --git a/src/tools/pw-dot.c b/src/tools/pw-dot.c index 76d2d76d0..c461fc8c1 100644 --- a/src/tools/pw-dot.c +++ b/src/tools/pw-dot.c @@ -98,7 +98,7 @@ static void dot_str_clear(char **str) } } -static void dot_str_vadd(char **str, const char *fmt, va_list varargs) +static SPA_PRINTF_FUNC(2,0) void dot_str_vadd(char **str, const char *fmt, va_list varargs) { char *res = NULL; char *fmt2 = NULL; @@ -122,7 +122,7 @@ static void dot_str_vadd(char **str, const char *fmt, va_list varargs) *str = res; } -static void dot_str_add(char **str, const char *fmt, ...) +static SPA_PRINTF_FUNC(2,3) void dot_str_add(char **str, const char *fmt, ...) { va_list varargs; va_start(varargs, fmt); @@ -149,7 +149,7 @@ static void draw_dict(char **str, const char *title, } } -static void draw_vlabel(char **str, const char *name, uint32_t id, bool detail, +static SPA_PRINTF_FUNC(7,0) void draw_vlabel(char **str, const char *name, uint32_t id, bool detail, const struct spa_dict *info_p, const struct spa_dict *p, const char *fmt, va_list varargs) { @@ -168,7 +168,7 @@ static void draw_vlabel(char **str, const char *name, uint32_t id, bool detail, dot_str_add(str, "%s", "\"];\n"); } -static void draw_label(char **str, const char *name, uint32_t id, bool detail, +static SPA_PRINTF_FUNC(7,8) void draw_label(char **str, const char *name, uint32_t id, bool detail, const struct spa_dict *info_p, const struct spa_dict *p, const char *fmt, ...) { @@ -233,8 +233,7 @@ static void draw_node(struct global *g) dot_str_add(dot_str, "node_id: %u\\lname: %s\\lmedia_class: %s\\l", g->id, spa_dict_lookup(info->props, PW_KEY_NODE_NAME), - spa_dict_lookup(info->props, PW_KEY_MEDIA_CLASS), - spa_dict_lookup(info->props, PW_KEY_OBJECT_ID)); + spa_dict_lookup(info->props, PW_KEY_MEDIA_CLASS)); if (g->data->show_detail) { draw_dict(dot_str, "info_props", info->props); draw_dict(dot_str, "properties", &g->props->dict);