diff --git a/include/warnings.h b/include/warnings.h index 8559f0d43..f0cab3de4 100644 --- a/include/warnings.h +++ b/include/warnings.h @@ -31,6 +31,11 @@ #define ACTIVATE_WARNING_PRAGMAS #endif #endif +#if defined(__clang__) && defined(__cplusplus) +#ifndef ACTIVATE_WARNING_PRAGMAS +#define ACTIVATE_WARNING_PRAGMAS +#endif +#endif #ifdef ACTIVATE_WARNING_PRAGMAS #if defined(__clang__) diff --git a/src/end.c b/src/end.c index 2f7ab17cf..395ea450c 100644 --- a/src/end.c +++ b/src/end.c @@ -550,6 +550,8 @@ fixup_death(int how) #define NOTIFY_NETHACK_BUGS #endif +DISABLE_WARNING_FORMAT_NONLITERAL + /*VARARGS1*/ void panic VA_DECL(const char *, str) @@ -630,6 +632,8 @@ VA_DECL(const char *, str) really_done(PANICKED); } +RESTORE_WARNING_FORMAT_NONLITERAL + static boolean should_query_disclose_option(int category, char *defquery) { diff --git a/src/hacklib.c b/src/hacklib.c index 12c2006a6..027f18cf1 100644 --- a/src/hacklib.c +++ b/src/hacklib.c @@ -1257,6 +1257,8 @@ shuffle_int_array(int *indices, int count) } } +DISABLE_WARNING_FORMAT_NONLITERAL + /* * Wrap snprintf for use in the main code. * @@ -1292,4 +1294,6 @@ nh_snprintf(const char *func, int line, char *str, size_t size, } } +RESTORE_WARNING_FORMAT_NONLITERAL + /*hacklib.c*/ diff --git a/src/pline.c b/src/pline.c index 2ce20d624..cfd2b94e1 100644 --- a/src/pline.c +++ b/src/pline.c @@ -80,6 +80,8 @@ putmesg(const char *line) static void vpline(const char *, va_list); +DISABLE_WARNING_FORMAT_NONLITERAL + void pline(const char *line, ...) { @@ -199,6 +201,8 @@ pline_done: --in_pline; } +RESTORE_WARNING_FORMAT_NONLITERAL + /* pline() variant which can override MSGTYPE handling or suppress message history (tty interface uses pline() to issue prompts and they shouldn't be blockable via MSGTYPE=hide) */ @@ -390,6 +394,8 @@ raw_printf(const char *line, ...) va_end(the_args); } +DISABLE_WARNING_FORMAT_NONLITERAL + static void vraw_printf(const char *line, va_list the_args) { @@ -450,6 +456,8 @@ impossible(const char *s, ...) g.program_state.in_impossible = 0; } +RESTORE_WARNING_FORMAT_NONLITERAL + #if defined(MSGHANDLER) && (defined(POSIX_TYPES) || defined(__GNUC__)) static boolean use_pline_handler = TRUE; @@ -496,6 +504,8 @@ execplinehandler(const char *line) */ static void vconfig_error_add(const char *, va_list); +DISABLE_WARNING_FORMAT_NONLITERAL + void config_error_add(const char *str, ...) { @@ -528,6 +538,8 @@ vconfig_error_add(const char *str, va_list the_args) config_erradd(buf); } +RESTORE_WARNING_FORMAT_NONLITERAL + /* nhassert_failed is called when an nhassert's condition is false */ void nhassert_failed(const char *expression, const char *filepath, int line) diff --git a/sys/share/unixtty.c b/sys/share/unixtty.c index dd5f5682a..d731e1038 100644 --- a/sys/share/unixtty.c +++ b/sys/share/unixtty.c @@ -462,6 +462,8 @@ init_linux_cons(void) } #endif /* __linux__ */ +DISABLE_WARNING_FORMAT_NONLITERAL + #ifndef __begui__ /* the Be GUI will define its own error proc */ /* fatal error */ void @@ -480,3 +482,6 @@ error(const char *s, ...) exit(EXIT_FAILURE); } #endif /* !__begui__ */ + +RESTORE_WARNING_FORMAT_NONLITERAL + diff --git a/util/panic.c b/util/panic.c index 6d5d93f41..d598e0378 100644 --- a/util/panic.c +++ b/util/panic.c @@ -22,6 +22,8 @@ extern void vms_abort(void); boolean panicking; void panic(const char *, ...); +DISABLE_WARNING_FORMAT_NONLITERAL + void panic VA_DECL(const char *, str) { @@ -46,6 +48,8 @@ VA_DECL(const char *, str) exit(EXIT_FAILURE); /* redundant */ } +RESTORE_WARNING_FORMAT_NONLITERAL + #ifdef ALLOCA_HACK /* * In case bison-generated foo_yacc.c tries to use alloca(); if we don't diff --git a/win/Qt/qt_stat.cpp b/win/Qt/qt_stat.cpp index 3fca92c89..edbda992e 100644 --- a/win/Qt/qt_stat.cpp +++ b/win/Qt/qt_stat.cpp @@ -565,6 +565,8 @@ QHBoxLayout *NetHackQtStatusWindow::InitHitpointBar() return hpbar; // caller will add our result to vbox layout } +DISABLE_WARNING_FORMAT_NONLITERAL + // when hitpoint bar is enabled, calculate and draw it, otherwise remove it void NetHackQtStatusWindow::HitpointBar() { @@ -665,6 +667,8 @@ void NetHackQtStatusWindow::HitpointBar() } } +RESTORE_WARNING_FORMAT_NONLITERAL + /* * Update the displayed status. The current code in botl.c updates * two lines of information. Both lines are always updated one after diff --git a/win/X11/winstat.c b/win/X11/winstat.c index d876f55c0..c4c8adb6e 100644 --- a/win/X11/winstat.c +++ b/win/X11/winstat.c @@ -642,6 +642,8 @@ tt_status_fixup(void) XtGetValues(X11_status_labels[0], args, num_args); } +DISABLE_WARNING_FORMAT_NONLITERAL + /* core requests updating one status field (or is indicating that it's time to flush all updated fields); tty-style handling */ static void @@ -810,6 +812,8 @@ X11_status_update_tty(int fld, genericptr_t ptr, int chg UNUSED, int percent, (void) XFlush(XtDisplay(X11_status_labels[0])); } +RESTORE_WARNING_FORMAT_NONLITERAL + /*ARGSUSED*/ static void X11_status_update_fancy(int fld, genericptr_t ptr, int chg UNUSED, @@ -1444,6 +1448,8 @@ hilight_label(Widget w) /* label widget */ swap_fg_bg(w); } +DISABLE_WARNING_FORMAT_NONLITERAL + static void update_val(struct X_status_value *attr_rec, long new_value) { @@ -1652,6 +1658,8 @@ update_val(struct X_status_value *attr_rec, long new_value) } } +RESTORE_WARNING_FORMAT_NONLITERAL + /* overloaded condition is being cleared without going through update_val() so that an alternate can be shown; put this one back to default settings */ static void