Patchwork [3/3] Use GCC_FMT_ATTR (format checking)

login
register
mail settings
Submitter Stefan Weil
Date Sept. 23, 2010, 7:28 p.m.
Message ID <1285270085-11276-3-git-send-email-weil@mail.berlios.de>
Download mbox | patch
Permalink /patch/65575/
State New
Headers show

Comments

Stefan Weil - Sept. 23, 2010, 7:28 p.m.
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 audio/audio.h      |    2 +-
 disas.c            |    3 ++-
 hw/mips_fulong2e.c |    3 ++-
 hw/mips_malta.c    |    3 ++-
 json-parser.c      |    3 ++-
 monitor.c          |    3 ++-
 monitor.h          |    3 ++-
 qemu-char.h        |    3 ++-
 qemu-error.h       |    2 +-
 qemu-img.c         |    2 +-
 qerror.c           |    6 ++++--
 qerror.h           |    2 +-
 qjson.h            |    4 ++--
 slirp/slirp.h      |    2 +-
 14 files changed, 25 insertions(+), 16 deletions(-)
Blue Swirl - Oct. 3, 2010, 7:49 a.m.
Thanks, applied.

On Thu, Sep 23, 2010 at 7:28 PM, Stefan Weil <weil@mail.berlios.de> wrote:
> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
> ---
>  audio/audio.h      |    2 +-
>  disas.c            |    3 ++-
>  hw/mips_fulong2e.c |    3 ++-
>  hw/mips_malta.c    |    3 ++-
>  json-parser.c      |    3 ++-
>  monitor.c          |    3 ++-
>  monitor.h          |    3 ++-
>  qemu-char.h        |    3 ++-
>  qemu-error.h       |    2 +-
>  qemu-img.c         |    2 +-
>  qerror.c           |    6 ++++--
>  qerror.h           |    2 +-
>  qjson.h            |    4 ++--
>  slirp/slirp.h      |    2 +-
>  14 files changed, 25 insertions(+), 16 deletions(-)
>
> diff --git a/audio/audio.h b/audio/audio.h
> index 39a0631..a70fda9 100644
> --- a/audio/audio.h
> +++ b/audio/audio.h
> @@ -86,7 +86,7 @@ typedef struct QEMUAudioTimeStamp {
>     uint64_t old_ts;
>  } QEMUAudioTimeStamp;
>
> -void AUD_vlog (const char *cap, const char *fmt, va_list ap);
> +void AUD_vlog (const char *cap, const char *fmt, va_list ap) GCC_FMT_ATTR(2, 0);
>  void AUD_log (const char *cap, const char *fmt, ...) GCC_FMT_ATTR(2, 3);
>
>  void AUD_help (void);
> diff --git a/disas.c b/disas.c
> index 79a98de..afe331f 100644
> --- a/disas.c
> +++ b/disas.c
> @@ -349,7 +349,8 @@ monitor_read_memory (bfd_vma memaddr, bfd_byte *myaddr, int length,
>     return 0;
>  }
>
> -static int monitor_fprintf(FILE *stream, const char *fmt, ...)
> +static int GCC_FMT_ATTR(2, 3)
> +monitor_fprintf(FILE *stream, const char *fmt, ...)
>  {
>     va_list ap;
>     va_start(ap, fmt);
> diff --git a/hw/mips_fulong2e.c b/hw/mips_fulong2e.c
> index 61ca9c4..df80ef6 100644
> --- a/hw/mips_fulong2e.c
> +++ b/hw/mips_fulong2e.c
> @@ -76,7 +76,8 @@ static struct _loaderparams {
>     const char *initrd_filename;
>  } loaderparams;
>
> -static void prom_set(uint32_t* prom_buf, int index, const char *string, ...)
> +static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t* prom_buf, int index,
> +                                        const char *string, ...)
>  {
>     va_list ap;
>     int32_t table_addr;
> diff --git a/hw/mips_malta.c b/hw/mips_malta.c
> index 1cb7880..0969089 100644
> --- a/hw/mips_malta.c
> +++ b/hw/mips_malta.c
> @@ -654,7 +654,8 @@ static void write_bootloader (CPUState *env, uint8_t *base,
>
>  }
>
> -static void prom_set(uint32_t* prom_buf, int index, const char *string, ...)
> +static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t* prom_buf, int index,
> +                                        const char *string, ...)
>  {
>     va_list ap;
>     int32_t table_addr;
> diff --git a/json-parser.c b/json-parser.c
> index 70b9b6f..6c06ef9 100644
> --- a/json-parser.c
> +++ b/json-parser.c
> @@ -91,7 +91,8 @@ static int token_is_escape(QObject *obj, const char *value)
>  /**
>  * Error handler
>  */
> -static void parse_error(JSONParserContext *ctxt, QObject *token, const char *msg, ...)
> +static void GCC_FMT_ATTR(3, 4) parse_error(JSONParserContext *ctxt,
> +                                           QObject *token, const char *msg, ...)
>  {
>     va_list ap;
>     va_start(ap, msg);
> diff --git a/monitor.c b/monitor.c
> index e602480..377ab37 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -316,7 +316,8 @@ void monitor_print_filename(Monitor *mon, const char *filename)
>     }
>  }
>
> -static int monitor_fprintf(FILE *stream, const char *fmt, ...)
> +static int GCC_FMT_ATTR(2, 3) monitor_fprintf(FILE *stream,
> +                                              const char *fmt, ...)
>  {
>     va_list ap;
>     va_start(ap, fmt);
> diff --git a/monitor.h b/monitor.h
> index 185cc3e..4a6cf82 100644
> --- a/monitor.h
> +++ b/monitor.h
> @@ -49,7 +49,8 @@ int monitor_read_bdrv_key_start(Monitor *mon, BlockDriverState *bs,
>
>  int monitor_get_fd(Monitor *mon, const char *fdname);
>
> -void monitor_vprintf(Monitor *mon, const char *fmt, va_list ap);
> +void monitor_vprintf(Monitor *mon, const char *fmt, va_list ap)
> +    GCC_FMT_ATTR(2, 0);
>  void monitor_printf(Monitor *mon, const char *fmt, ...) GCC_FMT_ATTR(2, 3);
>  void monitor_print_filename(Monitor *mon, const char *filename);
>  void monitor_flush(Monitor *mon);
> diff --git a/qemu-char.h b/qemu-char.h
> index 6ea01ba..18ad12b 100644
> --- a/qemu-char.h
> +++ b/qemu-char.h
> @@ -76,7 +76,8 @@ CharDriverState *qemu_chr_open_opts(QemuOpts *opts,
>                                     void (*init)(struct CharDriverState *s));
>  CharDriverState *qemu_chr_open(const char *label, const char *filename, void (*init)(struct CharDriverState *s));
>  void qemu_chr_close(CharDriverState *chr);
> -void qemu_chr_printf(CharDriverState *s, const char *fmt, ...);
> +void qemu_chr_printf(CharDriverState *s, const char *fmt, ...)
> +    GCC_FMT_ATTR(2, 3);
>  int qemu_chr_write(CharDriverState *s, const uint8_t *buf, int len);
>  void qemu_chr_send_event(CharDriverState *s, int event);
>  void qemu_chr_add_handlers(CharDriverState *s,
> diff --git a/qemu-error.h b/qemu-error.h
> index 531ec63..4d5c537 100644
> --- a/qemu-error.h
> +++ b/qemu-error.h
> @@ -30,7 +30,7 @@ void loc_set_none(void);
>  void loc_set_cmdline(char **argv, int idx, int cnt);
>  void loc_set_file(const char *fname, int lno);
>
> -void error_vprintf(const char *fmt, va_list ap);
> +void error_vprintf(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0);
>  void error_printf(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
>  void error_printf_unless_qmp(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
>  void error_print_loc(void);
> diff --git a/qemu-img.c b/qemu-img.c
> index 4e035e4..578b8eb 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -39,7 +39,7 @@ typedef struct img_cmd_t {
>  /* Default to cache=writeback as data integrity is not important for qemu-tcg. */
>  #define BDRV_O_FLAGS BDRV_O_CACHE_WB
>
> -static void error(const char *fmt, ...)
> +static void GCC_FMT_ATTR(1, 2) error(const char *fmt, ...)
>  {
>     va_list ap;
>     va_start(ap, fmt);
> diff --git a/qerror.c b/qerror.c
> index 0af3ab3..ac2cdaf 100644
> --- a/qerror.c
> +++ b/qerror.c
> @@ -218,7 +218,8 @@ QError *qerror_new(void)
>     return qerr;
>  }
>
> -static void qerror_abort(const QError *qerr, const char *fmt, ...)
> +static void GCC_FMT_ATTR(2, 3) qerror_abort(const QError *qerr,
> +                                            const char *fmt, ...)
>  {
>     va_list ap;
>
> @@ -233,7 +234,8 @@ static void qerror_abort(const QError *qerr, const char *fmt, ...)
>     abort();
>  }
>
> -static void qerror_set_data(QError *qerr, const char *fmt, va_list *va)
> +static void GCC_FMT_ATTR(2, 0) qerror_set_data(QError *qerr,
> +                                               const char *fmt, va_list *va)
>  {
>     QObject *obj;
>
> diff --git a/qerror.h b/qerror.h
> index f2984dd..943a24b 100644
> --- a/qerror.h
> +++ b/qerror.h
> @@ -34,7 +34,7 @@ typedef struct QError {
>
>  QError *qerror_new(void);
>  QError *qerror_from_info(const char *file, int linenr, const char *func,
> -                         const char *fmt, va_list *va);
> +                         const char *fmt, va_list *va) GCC_FMT_ATTR(4, 0);
>  QString *qerror_human(const QError *qerror);
>  void qerror_print(QError *qerror);
>  void qerror_report_internal(const char *file, int linenr, const char *func,
> diff --git a/qjson.h b/qjson.h
> index 7eef357..70d0afb 100644
> --- a/qjson.h
> +++ b/qjson.h
> @@ -18,9 +18,9 @@
>  #include "qobject.h"
>  #include "qstring.h"
>
> -QObject *qobject_from_json(const char *string);
> +QObject *qobject_from_json(const char *string) GCC_FMT_ATTR(1, 0);
>  QObject *qobject_from_jsonf(const char *string, ...) GCC_FMT_ATTR(1, 2);
> -QObject *qobject_from_jsonv(const char *string, va_list *ap);
> +QObject *qobject_from_jsonv(const char *string, va_list *ap) GCC_FMT_ATTR(1, 0);
>
>  QString *qobject_to_json(const QObject *obj);
>
> diff --git a/slirp/slirp.h b/slirp/slirp.h
> index 3a5d592..14edf66 100644
> --- a/slirp/slirp.h
> +++ b/slirp/slirp.h
> @@ -261,7 +261,7 @@ void if_start(struct ttys *);
>  long gethostid(void);
>  #endif
>
> -void lprint(const char *, ...);
> +void lprint(const char *, ...) GCC_FMT_ATTR(1, 2);
>
>  #ifndef _WIN32
>  #include <netdb.h>
> --
> 1.7.1
>
>
>

Patch

diff --git a/audio/audio.h b/audio/audio.h
index 39a0631..a70fda9 100644
--- a/audio/audio.h
+++ b/audio/audio.h
@@ -86,7 +86,7 @@  typedef struct QEMUAudioTimeStamp {
     uint64_t old_ts;
 } QEMUAudioTimeStamp;
 
-void AUD_vlog (const char *cap, const char *fmt, va_list ap);
+void AUD_vlog (const char *cap, const char *fmt, va_list ap) GCC_FMT_ATTR(2, 0);
 void AUD_log (const char *cap, const char *fmt, ...) GCC_FMT_ATTR(2, 3);
 
 void AUD_help (void);
diff --git a/disas.c b/disas.c
index 79a98de..afe331f 100644
--- a/disas.c
+++ b/disas.c
@@ -349,7 +349,8 @@  monitor_read_memory (bfd_vma memaddr, bfd_byte *myaddr, int length,
     return 0;
 }
 
-static int monitor_fprintf(FILE *stream, const char *fmt, ...)
+static int GCC_FMT_ATTR(2, 3)
+monitor_fprintf(FILE *stream, const char *fmt, ...)
 {
     va_list ap;
     va_start(ap, fmt);
diff --git a/hw/mips_fulong2e.c b/hw/mips_fulong2e.c
index 61ca9c4..df80ef6 100644
--- a/hw/mips_fulong2e.c
+++ b/hw/mips_fulong2e.c
@@ -76,7 +76,8 @@  static struct _loaderparams {
     const char *initrd_filename;
 } loaderparams;
 
-static void prom_set(uint32_t* prom_buf, int index, const char *string, ...)
+static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t* prom_buf, int index,
+                                        const char *string, ...)
 {
     va_list ap;
     int32_t table_addr;
diff --git a/hw/mips_malta.c b/hw/mips_malta.c
index 1cb7880..0969089 100644
--- a/hw/mips_malta.c
+++ b/hw/mips_malta.c
@@ -654,7 +654,8 @@  static void write_bootloader (CPUState *env, uint8_t *base,
 
 }
 
-static void prom_set(uint32_t* prom_buf, int index, const char *string, ...)
+static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t* prom_buf, int index,
+                                        const char *string, ...)
 {
     va_list ap;
     int32_t table_addr;
diff --git a/json-parser.c b/json-parser.c
index 70b9b6f..6c06ef9 100644
--- a/json-parser.c
+++ b/json-parser.c
@@ -91,7 +91,8 @@  static int token_is_escape(QObject *obj, const char *value)
 /**
  * Error handler
  */
-static void parse_error(JSONParserContext *ctxt, QObject *token, const char *msg, ...)
+static void GCC_FMT_ATTR(3, 4) parse_error(JSONParserContext *ctxt,
+                                           QObject *token, const char *msg, ...)
 {
     va_list ap;
     va_start(ap, msg);
diff --git a/monitor.c b/monitor.c
index e602480..377ab37 100644
--- a/monitor.c
+++ b/monitor.c
@@ -316,7 +316,8 @@  void monitor_print_filename(Monitor *mon, const char *filename)
     }
 }
 
-static int monitor_fprintf(FILE *stream, const char *fmt, ...)
+static int GCC_FMT_ATTR(2, 3) monitor_fprintf(FILE *stream,
+                                              const char *fmt, ...)
 {
     va_list ap;
     va_start(ap, fmt);
diff --git a/monitor.h b/monitor.h
index 185cc3e..4a6cf82 100644
--- a/monitor.h
+++ b/monitor.h
@@ -49,7 +49,8 @@  int monitor_read_bdrv_key_start(Monitor *mon, BlockDriverState *bs,
 
 int monitor_get_fd(Monitor *mon, const char *fdname);
 
-void monitor_vprintf(Monitor *mon, const char *fmt, va_list ap);
+void monitor_vprintf(Monitor *mon, const char *fmt, va_list ap)
+    GCC_FMT_ATTR(2, 0);
 void monitor_printf(Monitor *mon, const char *fmt, ...) GCC_FMT_ATTR(2, 3);
 void monitor_print_filename(Monitor *mon, const char *filename);
 void monitor_flush(Monitor *mon);
diff --git a/qemu-char.h b/qemu-char.h
index 6ea01ba..18ad12b 100644
--- a/qemu-char.h
+++ b/qemu-char.h
@@ -76,7 +76,8 @@  CharDriverState *qemu_chr_open_opts(QemuOpts *opts,
                                     void (*init)(struct CharDriverState *s));
 CharDriverState *qemu_chr_open(const char *label, const char *filename, void (*init)(struct CharDriverState *s));
 void qemu_chr_close(CharDriverState *chr);
-void qemu_chr_printf(CharDriverState *s, const char *fmt, ...);
+void qemu_chr_printf(CharDriverState *s, const char *fmt, ...)
+    GCC_FMT_ATTR(2, 3);
 int qemu_chr_write(CharDriverState *s, const uint8_t *buf, int len);
 void qemu_chr_send_event(CharDriverState *s, int event);
 void qemu_chr_add_handlers(CharDriverState *s,
diff --git a/qemu-error.h b/qemu-error.h
index 531ec63..4d5c537 100644
--- a/qemu-error.h
+++ b/qemu-error.h
@@ -30,7 +30,7 @@  void loc_set_none(void);
 void loc_set_cmdline(char **argv, int idx, int cnt);
 void loc_set_file(const char *fname, int lno);
 
-void error_vprintf(const char *fmt, va_list ap);
+void error_vprintf(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0);
 void error_printf(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
 void error_printf_unless_qmp(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
 void error_print_loc(void);
diff --git a/qemu-img.c b/qemu-img.c
index 4e035e4..578b8eb 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -39,7 +39,7 @@  typedef struct img_cmd_t {
 /* Default to cache=writeback as data integrity is not important for qemu-tcg. */
 #define BDRV_O_FLAGS BDRV_O_CACHE_WB
 
-static void error(const char *fmt, ...)
+static void GCC_FMT_ATTR(1, 2) error(const char *fmt, ...)
 {
     va_list ap;
     va_start(ap, fmt);
diff --git a/qerror.c b/qerror.c
index 0af3ab3..ac2cdaf 100644
--- a/qerror.c
+++ b/qerror.c
@@ -218,7 +218,8 @@  QError *qerror_new(void)
     return qerr;
 }
 
-static void qerror_abort(const QError *qerr, const char *fmt, ...)
+static void GCC_FMT_ATTR(2, 3) qerror_abort(const QError *qerr,
+                                            const char *fmt, ...)
 {
     va_list ap;
 
@@ -233,7 +234,8 @@  static void qerror_abort(const QError *qerr, const char *fmt, ...)
     abort();
 }
 
-static void qerror_set_data(QError *qerr, const char *fmt, va_list *va)
+static void GCC_FMT_ATTR(2, 0) qerror_set_data(QError *qerr,
+                                               const char *fmt, va_list *va)
 {
     QObject *obj;
 
diff --git a/qerror.h b/qerror.h
index f2984dd..943a24b 100644
--- a/qerror.h
+++ b/qerror.h
@@ -34,7 +34,7 @@  typedef struct QError {
 
 QError *qerror_new(void);
 QError *qerror_from_info(const char *file, int linenr, const char *func,
-                         const char *fmt, va_list *va);
+                         const char *fmt, va_list *va) GCC_FMT_ATTR(4, 0);
 QString *qerror_human(const QError *qerror);
 void qerror_print(QError *qerror);
 void qerror_report_internal(const char *file, int linenr, const char *func,
diff --git a/qjson.h b/qjson.h
index 7eef357..70d0afb 100644
--- a/qjson.h
+++ b/qjson.h
@@ -18,9 +18,9 @@ 
 #include "qobject.h"
 #include "qstring.h"
 
-QObject *qobject_from_json(const char *string);
+QObject *qobject_from_json(const char *string) GCC_FMT_ATTR(1, 0);
 QObject *qobject_from_jsonf(const char *string, ...) GCC_FMT_ATTR(1, 2);
-QObject *qobject_from_jsonv(const char *string, va_list *ap);
+QObject *qobject_from_jsonv(const char *string, va_list *ap) GCC_FMT_ATTR(1, 0);
 
 QString *qobject_to_json(const QObject *obj);
 
diff --git a/slirp/slirp.h b/slirp/slirp.h
index 3a5d592..14edf66 100644
--- a/slirp/slirp.h
+++ b/slirp/slirp.h
@@ -261,7 +261,7 @@  void if_start(struct ttys *);
  long gethostid(void);
 #endif
 
-void lprint(const char *, ...);
+void lprint(const char *, ...) GCC_FMT_ATTR(1, 2);
 
 #ifndef _WIN32
 #include <netdb.h>