diff options
-rw-r--r-- | mp_msg.h | 12 | ||||
-rw-r--r-- | mpcommon.h | 20 | ||||
-rw-r--r-- | talloc.h | 14 |
3 files changed, 26 insertions, 20 deletions
@@ -130,19 +130,15 @@ void mp_msg_init(void); int mp_msg_test(int mod, int lev); #include "config.h" +#include "mpcommon.h" char *mp_gtext(const char *string); void mp_msg_va(int mod, int lev, const char *format, va_list va); -#ifdef __GNUC__ -void mp_msg(int mod, int lev, const char *format, ... ) __attribute__ ((format (printf, 3, 4))); -void mp_tmsg(int mod, int lev, const char *format, ... ) __attribute__ ((format (printf, 3, 4))); -static inline void mp_dbg(int mod, int lev, const char *format, ...) __attribute__ ((format (printf, 3, 4))); -#else // not GNU C -void mp_msg(int mod, int lev, const char *format, ... ); -void mp_tmsg(int mod, int lev, const char *format, ...) -#endif /* __GNUC__ */ +void mp_msg(int mod, int lev, const char *format, ... ) PRINTF_ATTRIBUTE(3, 4); +void mp_tmsg(int mod, int lev, const char *format, ... ) PRINTF_ATTRIBUTE(3, 4); +static inline void mp_dbg(int mod, int lev, const char *format, ...) PRINTF_ATTRIBUTE(3, 4); static inline void mp_dbg(int mod, int lev, const char *format, ...) { diff --git a/mpcommon.h b/mpcommon.h index fd520eacf6..2ff66fed40 100644 --- a/mpcommon.h +++ b/mpcommon.h @@ -31,6 +31,26 @@ #define MP_RESIZE_ARRAY(ctx, p, count) do { \ p = talloc_realloc_size((ctx), p, (count) * sizeof(p[0])); } while (0) +#ifdef __GNUC__ + +/** Use gcc attribute to check printf fns. a1 is the 1-based index of + * the parameter containing the format, and a2 the index of the first + * argument. **/ +#ifdef __MINGW32__ +// MinGW maps "printf" to the non-standard MSVCRT functions, even if +// __USE_MINGW_ANSI_STDIO is defined and set to 1. We need to use "gnu_printf", +// which isn't necessarily available on other GCC compatible compilers. +#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (gnu_printf, a1, a2))) +#else +#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (printf, a1, a2))) +#endif + +#else + +#define PRINTF_ATTRIBUTE(a1, a2) + +#endif + extern const char *mplayer_version; #endif /* MPLAYER_MPCOMMON_H */ @@ -29,6 +29,8 @@ #include <stdio.h> #include <stdarg.h> +#include "mpcommon.h" + /* HACK: libsmbclient uses dynamically linked libtalloc.so which has * identically named symbols. This name collision caused a crash under * stream_smb when trying to play anything with smb://. This hack @@ -54,18 +56,6 @@ typedef void TALLOC_CTX; #define TALLOC_DEPRECATED 0 #endif -#ifndef PRINTF_ATTRIBUTE -#if (__GNUC__ >= 3) -/** Use gcc attribute to check printf fns. a1 is the 1-based index of - * the parameter containing the format, and a2 the index of the first - * argument. Note that some gcc 2.x versions don't handle this - * properly **/ -#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (__printf__, a1, a2))) -#else -#define PRINTF_ATTRIBUTE(a1, a2) -#endif -#endif - /* try to make talloc_set_destructor() and talloc_steal() type safe, if we have a recent gcc */ #if (__GNUC__ >= 3) |