Get rid of the last two warnings by turning them off around the problem

statements, if the compiler supports it.
This commit is contained in:
nicm 2021-09-10 14:22:24 +00:00
parent 5cdc1bdd32
commit 33ac7a346e
2 changed files with 16 additions and 2 deletions

4
log.c
View File

@ -147,7 +147,7 @@ fatal(const char *msg, ...)
va_start(ap, msg);
if (asprintf(&fmt, "fatal: %s: %s", msg, strerror(errno)) == -1)
exit(1);
log_vwrite(fmt, ap);
no_format_nonliteral(log_vwrite(fmt, ap));
va_end(ap);
exit(1);
}
@ -162,7 +162,7 @@ fatalx(const char *msg, ...)
va_start(ap, msg);
if (asprintf(&fmt, "fatal: %s", msg) == -1)
exit(1);
log_vwrite(fmt, ap);
no_format_nonliteral(log_vwrite(fmt, ap));
va_end(ap);
exit(1);
}

14
tmux.h
View File

@ -93,6 +93,20 @@ struct winlink;
#define DEFAULT_XPIXEL 16
#define DEFAULT_YPIXEL 32
/* Don't complain about format arguments. */
#if __clang__ || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
#define no_format_nonliteral(x) do { \
_Pragma ("GCC diagnostic push") \
_Pragma ("GCC diagnostic ignored \"-Wformat-nonliteral\"") \
x; \
_Pragma ("GCC diagnostic pop") \
} while (0)
#else
#define no_format_nonliteral(x) do { \
x; \
} while (0)
#endif
/* Attribute to make GCC check printf-like arguments. */
#define printflike(a, b) __attribute__ ((format (printf, a, b)))