Add compile-time check for trailing con_printf newline

This commit is contained in:
Kp 2015-02-13 03:27:28 +00:00
parent 7f2974ea69
commit 2088dcc0f3
2 changed files with 13 additions and 4 deletions

View file

@ -51,7 +51,16 @@ static inline void con_puts_literal(int level, const char (&str)[len])
} }
#define con_puts(A1,S,...) (con_puts(A1,S, _dxx_call_puts_parameter2(1, ## __VA_ARGS__, strlen(S)))) #define con_puts(A1,S,...) (con_puts(A1,S, _dxx_call_puts_parameter2(1, ## __VA_ARGS__, strlen(S))))
void con_printf(int level, const char *fmt, ...) __attribute_format_printf(2, 3); void con_printf(int level, const char *fmt, ...) __attribute_format_printf(2, 3);
#define con_printf(A1,F,...) dxx_call_printf_checked(con_printf,con_puts_literal,(A1),(F),##__VA_ARGS__) #ifdef DXX_HAVE_BUILTIN_CONSTANT_P
#define _dxx_con_printf_check_trailing_newline(F) \
(sizeof((F)) > 1 && (F)[sizeof((F)) - 2] == '\n' && \
(DXX_ALWAYS_ERROR_FUNCTION(dxx_trap_trailing_newline, "trailing literal newline on con_printf"), 0)),
#else
#define _dxx_con_printf_check_trailing_newline(C)
#endif
#define con_printf(A1,F,...) \
_dxx_con_printf_check_trailing_newline(F) \
dxx_call_printf_checked(con_printf,con_puts_literal,(A1),(F),##__VA_ARGS__)
void con_showup(void); void con_showup(void);
#endif #endif

View file

@ -411,16 +411,16 @@ int main(int argc, char *argv[])
con_printf(CON_NORMAL, "%s %s", DESCENT_VERSION, g_descent_build_datetime); // D1X version con_printf(CON_NORMAL, "%s %s", DESCENT_VERSION, g_descent_build_datetime); // D1X version
con_printf(CON_NORMAL, "This is a MODIFIED version of Descent, based on %s.", BASED_VERSION); con_printf(CON_NORMAL, "This is a MODIFIED version of Descent, based on %s.", BASED_VERSION);
con_printf(CON_NORMAL, "%s\n%s",TXT_COPYRIGHT,TXT_TRADEMARK); con_printf(CON_NORMAL, "%s\n%s",TXT_COPYRIGHT,TXT_TRADEMARK);
con_printf(CON_NORMAL, "Copyright (C) 2005-2013 Christian Beckhaeuser\n"); con_printf(CON_NORMAL, "Copyright (C) 2005-2013 Christian Beckhaeuser");
#elif defined(DXX_BUILD_DESCENT_II) #elif defined(DXX_BUILD_DESCENT_II)
con_printf(CON_NORMAL, "%s%s %s", DESCENT_VERSION, PHYSFSX_exists(MISSION_DIR "d2x.hog",1) ? " Vertigo Enhanced" : "", g_descent_build_datetime); // D2X version con_printf(CON_NORMAL, "%s%s %s", DESCENT_VERSION, PHYSFSX_exists(MISSION_DIR "d2x.hog",1) ? " Vertigo Enhanced" : "", g_descent_build_datetime); // D2X version
con_printf(CON_NORMAL, "This is a MODIFIED version of Descent 2, based on %s.", BASED_VERSION); con_printf(CON_NORMAL, "This is a MODIFIED version of Descent 2, based on %s.", BASED_VERSION);
con_printf(CON_NORMAL, "%s\n%s",TXT_COPYRIGHT,TXT_TRADEMARK); con_printf(CON_NORMAL, "%s\n%s",TXT_COPYRIGHT,TXT_TRADEMARK);
con_printf(CON_NORMAL, "Copyright (C) 1999 Peter Hawkins, 2002 Bradley Bell, 2005-2013 Christian Beckhaeuser\n"); con_printf(CON_NORMAL, "Copyright (C) 1999 Peter Hawkins, 2002 Bradley Bell, 2005-2013 Christian Beckhaeuser");
#endif #endif
if (GameArg.DbgVerbose) if (GameArg.DbgVerbose)
con_printf(CON_VERBOSE,"%s%s", TXT_VERBOSE_1, ""); con_puts(CON_VERBOSE, TXT_VERBOSE_1);
ReadConfigFile(); ReadConfigFile();