#include <stdio.h>
#include <sys/time.h>
+/*----- 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 {
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