diff --git a/Contrib/Library/LibraryLocal/LibraryLocal.cpp b/Contrib/Library/LibraryLocal/LibraryLocal.cpp index ed8c18b7..fd41f391 100644 --- a/Contrib/Library/LibraryLocal/LibraryLocal.cpp +++ b/Contrib/Library/LibraryLocal/LibraryLocal.cpp @@ -19,9 +19,8 @@ using namespace std; -int g_noconfig=0; -int g_display_errors=1; -FILE *g_output=stdout; +int g_noconfig=0; // TODO: Not used? +NSISRT_DEFINEGLOBALS(); int GetTLBVersion(tstring& filepath, DWORD& high, DWORD & low) { diff --git a/Source/Tests/mmap.cpp b/Source/Tests/mmap.cpp index 8e04b5e2..a8cd5cdb 100644 --- a/Source/Tests/mmap.cpp +++ b/Source/Tests/mmap.cpp @@ -6,14 +6,14 @@ #include #include #include +#include "../util.h" // HACKHACK: for NSISRT_DEFINEGLOBALS using namespace std; // for std::min -int g_display_errors = 1; -FILE *g_output = stderr; +NSISRT_DEFINEGLOBALS(); // HACKHACK: This really belongs in textrunner.cpp? void quit() { - _ftprintf(g_output, _T("MMap quit\n")); + _ftprintf(g_errout, _T("MMap quit\n")); } class MMapTest : public CppUnit::TestFixture { diff --git a/Source/Tests/winchar.cpp b/Source/Tests/winchar.cpp index e3b24754..59c0ab3d 100644 --- a/Source/Tests/winchar.cpp +++ b/Source/Tests/winchar.cpp @@ -28,7 +28,7 @@ class WinCharTest : public CppUnit::TestFixture { public: void setUp() { - NSISRT_Initialize(); + NSISRT_Initialize(); // HACKHACK: This really belongs in textrunner.cpp? } void testFromTchar() { diff --git a/Source/makenssi.cpp b/Source/makenssi.cpp index c1518123..2c3b4e26 100644 --- a/Source/makenssi.cpp +++ b/Source/makenssi.cpp @@ -36,9 +36,8 @@ using namespace std; +NSISRT_DEFINEGLOBALS(); bool g_dopause=false, g_warnaserror=false; -int g_display_errors=1; -FILE *g_output, *g_errout; NStreamEncoding g_outputenc; #ifdef _WIN32 UINT g_wincon_orgoutcp; @@ -296,7 +295,6 @@ static inline int makensismain(int argc, TCHAR **argv) assert(sizeof(WINWCHAR) == sizeof(WCHAR)); // Not really required but if WCHAR changes we need to know g_argv0=argv[0]; - g_output=stdout, g_errout=stderr; if (!NSISRT_Initialize()) { diff --git a/Source/util.cpp b/Source/util.cpp index a604d205..eaeb58d6 100644 --- a/Source/util.cpp +++ b/Source/util.cpp @@ -1115,6 +1115,14 @@ int WinStdIO_wprintf(const wchar_t*Fmt, ...) } #endif +void PrintColorFmtErrMsg(const TCHAR *fmtstr, va_list args) +{ + PrintColorFmtMsg_WARN(_T("")); // flush g_output + SetPrintColorERR(); + _vftprintf(g_errout, fmtstr, args), fflush(g_errout); + ResetPrintColor(); +} + void PrintColorFmtMsg(unsigned int type, const TCHAR *fmtstr, va_list args) { #ifdef _WIN32 diff --git a/Source/util.h b/Source/util.h index 3122b1e9..66f14b6e 100644 --- a/Source/util.h +++ b/Source/util.h @@ -105,6 +105,8 @@ public: int sane_system(const TCHAR *command); +#define NSISRT_DEFINEGLOBALS() int g_display_errors=1; FILE *g_output=stdout, *g_errout=stderr +void PrintColorFmtErrMsg(const TCHAR *fmtstr, va_list args); void PrintColorFmtMsg(unsigned int type, const TCHAR *fmtstr, va_list args); void FlushOutputAndResetPrintColor(); #ifdef _WIN32 @@ -161,11 +163,7 @@ inline void PrintColorFmtMsg_ERR(const TCHAR *fmtstr, ...) { va_list val; va_start(val,fmtstr); - PrintColorFmtMsg_WARN(_T("")); // flush g_output - SetPrintColorERR(); - extern FILE *g_errout; - _vftprintf(g_errout, fmtstr, val), fflush(g_errout); - ResetPrintColor(); + PrintColorFmtErrMsg(fmtstr, val); va_end(val); }