From: Gerhard Sittig Date: Fri, 6 Oct 2023 16:00:37 +0000 (+0200) Subject: libsigrok-internal.h: factor out logger decl's printf format attribute X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=913c5981eabebd1dbd5dbad27d895a7bcdbcfdac;p=libsigrok.git libsigrok-internal.h: factor out logger decl's printf format attribute Provide a common ATTR_FMT_PRINTF() macro which hides individual platforms' details. Use it in one common sr_log() declaration. This also allows re-use in other locations across the project. --- diff --git a/src/libsigrok-internal.h b/src/libsigrok-internal.h index e5033085..c2c324c4 100644 --- a/src/libsigrok-internal.h +++ b/src/libsigrok-internal.h @@ -1678,17 +1678,20 @@ struct drv_context { /*--- log.c -----------------------------------------------------------------*/ +/* Provide a macro for other source code locations to re-use. */ #if defined(_WIN32) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) /* * On MinGW, we need to specify the gnu_printf format flavor or GCC * will assume non-standard Microsoft printf syntax. */ -SR_PRIV int sr_log(int loglevel, const char *format, ...) - __attribute__((__format__ (__gnu_printf__, 2, 3))); +#define ATTR_FMT_PRINTF(fmt_pos, arg_pos) \ + __attribute__((__format__ (__gnu_printf__, fmt_pos, arg_pos))) #else -SR_PRIV int sr_log(int loglevel, const char *format, ...) G_GNUC_PRINTF(2, 3); +#define ATTR_FMT_PRINTF(fmt_pos, arg_pos) G_GNUC_PRINTF(fmt_pos, arg_pos) #endif +SR_PRIV int sr_log(int loglevel, const char *format, ...) ATTR_FMT_PRINTF(2, 3); + /* Message logging helpers with subsystem-specific prefix string. */ #define sr_spew(...) sr_log(SR_LOG_SPEW, LOG_PREFIX ": " __VA_ARGS__) #define sr_dbg(...) sr_log(SR_LOG_DBG, LOG_PREFIX ": " __VA_ARGS__)