From 56d911a193e51f8efc9cde3d087918982045e376 Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Fri, 25 Mar 2022 18:52:31 +0000 Subject: [PATCH] multiprogress.h: Use a macro to mark `printf'-like functions. Rather than using `__attribute__' directly. --- multiprogress.h | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/multiprogress.h b/multiprogress.h index e6f96f8..4a0d114 100644 --- a/multiprogress.h +++ b/multiprogress.h @@ -29,6 +29,18 @@ #include #include +/*----- Compiler-specific magic -------------------------------------------*/ + +#if (defined(__GNUC__) && (__GNUC__ > 2 || \ + (__GNUC__ == 2 && __GNUC_MINOR__ >= 5))) || \ + (defined(__clang__) && (__clang_major__ > 3 || \ + (__clang_major__ == 3 && __clang_minor__ >= 3))) +# define MULTIPROGRESS__PRINTF_LIKE(farg, aarg) \ + __attribute__((format(printf, farg, aarg))) +#else +# define MULTIPROGRESS__PRINTF_LIKE(farg, aarg) +#endif + /*----- Data structures ---------------------------------------------------*/ struct progress_ttyinfo { @@ -165,10 +177,10 @@ extern int progress_vputleft(struct progress_render_state */*render*/, const char */*fmt*/, va_list /*ap*/); extern int progress_vputright(struct progress_render_state */*render*/, const char */*fmt*/, va_list /*ap*/); -__attribute__((format(printf, 2, 3))) +MULTIPROGRESS__PRINTF_LIKE(2, 3) extern int progress_putleft(struct progress_render_state */*render*/, const char */*fmt*/, ...); -__attribute__((format(printf, 2, 3))) +MULTIPROGRESS__PRINTF_LIKE(2, 3) extern int progress_putright(struct progress_render_state */*render*/, const char */*fmt*/, ...); /* Format the `printf'-style string FMT with the supplied arguments -- 2.11.0