diff --git a/SCons/config.py b/SCons/config.py index 511021a9..111deaee 100644 --- a/SCons/config.py +++ b/SCons/config.py @@ -157,6 +157,14 @@ cfg.Add( ) ) +cfg.Add( + BoolOption( + 'NSIS_CONFIG_LOG_TIMESTAMP', + 'adds a timestamp to each log line.', + 'no' + ) +) + cfg.Add( BoolOption( 'NSIS_SUPPORT_BGBG', @@ -463,6 +471,7 @@ AddBoolDefine('NSIS_CONFIG_CRC_ANAL') AddBoolDefine('NSIS_CONFIG_LOG') AddBoolDefine('NSIS_CONFIG_LOG_ODS') AddBoolDefine('NSIS_CONFIG_LOG_STDOUT') +AddBoolDefine('NSIS_CONFIG_LOG_TIMESTAMP') AddBoolDefine('NSIS_SUPPORT_BGBG') AddBoolDefine('NSIS_SUPPORT_CODECALLBACKS') AddBoolDefine('NSIS_SUPPORT_MOVEONREBOOT') diff --git a/Source/exehead/config.h b/Source/exehead/config.h index 7e981bcf..bc17c2c6 100644 --- a/Source/exehead/config.h +++ b/Source/exehead/config.h @@ -38,6 +38,12 @@ #endif #endif +#ifdef NSIS_CONFIG_LOG_TIMESTAMP + #ifndef NSIS_CONFIG_LOG + #error NSIS_CONFIG_LOG_TIMESTAMP relies on NSIS_CONFIG_LOG, but NSIS_CONFIG_LOG is not defined + #endif +#endif + #if defined(NSIS_CONFIG_CRC_SUPPORT) && defined(NSIS_CONFIG_VISIBLE_SUPPORT) #define _NSIS_CONFIG_VERIFYDIALOG #endif diff --git a/Source/exehead/util.c b/Source/exehead/util.c index c49c5dfb..01a34b13 100644 --- a/Source/exehead/util.c +++ b/Source/exehead/util.c @@ -730,7 +730,7 @@ void NSISCALL validate_filename(char *in) { #ifdef NSIS_CONFIG_LOG int log_dolog; -char log_text[NSIS_MAX_STRLEN*4]; +char log_text[2048]; // 1024 for each wsprintf #if !defined(NSIS_CONFIG_LOG_ODS) && !defined(NSIS_CONFIG_LOG_STDOUT) void NSISCALL log_write(int close) @@ -810,11 +810,26 @@ void _LogData2Hex(char *buf, size_t buflen, unsigned char *data, size_t datalen) mystrcat(buf, "..."); } +#ifdef NSIS_CONFIG_LOG_TIMESTAMP +void log_timestamp(char *buf) +{ + SYSTEMTIME st; + GetLocalTime(&st); + wsprintf(buf,"[%04hu/%02hu/%02hu %02hu:%02hu:%02hu] ", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond); +} +#else +# define log_timestamp(x) +#endif//NSIS_CONFIG_LOG_TIMESTAMP + void log_printf(char *format, ...) { va_list val; va_start(val,format); - wvsprintf(log_text,format,val); + + log_text[0] = '\0'; + log_timestamp(log_text); + wvsprintf(log_text+mystrlen(log_text),format,val); + va_end(val); #ifdef NSIS_CONFIG_LOG_ODS if (log_dolog)