Hi This lets GCC warn us about printf errors with the wrapped printf calls too. And lo and behold, with this patch we have about a dozen new warnings :)
- Lauri
>From 5a98f65c13861dcd4ebc785c268261ed1ca5d7b6 Mon Sep 17 00:00:00 2001 From: Lauri Kasanen <[email protected]> Date: Thu, 7 Jun 2012 22:33:33 +0300 Subject: [PATCH] headers: Enable printf warnings for the wrapped printf functions Signed-off-by: Lauri Kasanen <[email protected]> --- src/include/mk_macros.h | 7 +++++++ src/include/mk_plugin.h | 4 ++-- src/include/mk_string.h | 3 ++- src/include/mk_utils.h | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/include/mk_macros.h b/src/include/mk_macros.h index 70b8782..03e1a3b 100644 --- a/src/include/mk_macros.h +++ b/src/include/mk_macros.h @@ -61,6 +61,13 @@ #ifndef ARRAY_SIZE # define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) #endif + +#ifdef __GNUC__ /* GCC supports this since 2.3. */ + #define PRINTF_WARNINGS(a,b) __attribute__ ((format (printf, a, b))) +#else + #define PRINTF_WARNINGS(a,b) +#endif + /* * Validation macros * ----------------- diff --git a/src/include/mk_plugin.h b/src/include/mk_plugin.h index 58e187e..68ef7fc 100644 --- a/src/include/mk_plugin.h +++ b/src/include/mk_plugin.h @@ -188,7 +188,7 @@ struct plugin_api struct sched_list_node *sched_list; /* Error helper */ - void (*_error) (int, const char *, ...); + void (*_error) (int, const char *, ...) PRINTF_WARNINGS(2,3); /* HTTP request function */ int (*http_request_end) (int); @@ -206,7 +206,7 @@ struct plugin_api int (*str_itop) (int, mk_pointer *); int (*str_search) (const char *, const char *, int); int (*str_search_n) (const char *, const char *, int, int); - char *(*str_build) (char **, unsigned long *, const char *, ...); + char *(*str_build) (char **, unsigned long *, const char *, ...) PRINTF_WARNINGS(3,4); char *(*str_dup) (const char *); char *(*str_copy_substr) (const char *, int, int); struct mk_list *(*str_split_line) (const char *); diff --git a/src/include/mk_string.h b/src/include/mk_string.h index 862b5db..62baeee 100644 --- a/src/include/mk_string.h +++ b/src/include/mk_string.h @@ -24,6 +24,7 @@ #include "memory.h" #include "mk_list.h" +#include "mk_macros.h" /* Case sensitive OFF */ #define MK_STR_SENSITIVE 0 @@ -58,7 +59,7 @@ struct mk_list *mk_string_split_line(const char *line); void mk_string_split_free(struct mk_list *list); int mk_string_trim(char **str); char *mk_string_build(char **buffer, unsigned long *len, - const char *format, ...); + const char *format, ...) PRINTF_WARNINGS(3,4); int mk_string_itop(int n, mk_pointer *p); char *mk_string_copy_substr(const char *string, int pos_init, int pos_end); diff --git a/src/include/mk_utils.h b/src/include/mk_utils.h index 3a15ace..a9dff24 100644 --- a/src/include/mk_utils.h +++ b/src/include/mk_utils.h @@ -79,7 +79,7 @@ int mk_utils_print_errno(int n); int mk_utils_register_pid(void); int mk_utils_remove_pid(void); -void mk_print(int type, const char *format, ...); +void mk_print(int type, const char *format, ...) PRINTF_WARNINGS(2,3); pthread_t mk_utils_worker_spawn(void (*func) (void *)); int mk_utils_worker_rename(const char *title); -- 1.7.2.1
_______________________________________________ Monkey mailing list [email protected] http://lists.monkey-project.com/listinfo/monkey
