X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=libctsupport%2Fsyserror.cpp;h=dfce52808afbad9e34b0d0eb9455f26e8d53102d;hp=8468f820743affdc535a49a4809fabcf1d2a94c2;hb=01ed72399d433ce45a0195f8acaea349a421461e;hpb=5c6b29ab4885308cc3381af6e0a68f4804956d2e diff --git a/libctsupport/syserror.cpp b/libctsupport/syserror.cpp index 8468f82..dfce528 100644 --- a/libctsupport/syserror.cpp +++ b/libctsupport/syserror.cpp @@ -2,7 +2,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: syserror.cpp,v 1.10 2000/12/29 15:45:06 kevin Exp $ +** $Id: syserror.cpp,v 1.18 2001/01/20 08:10:33 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -22,10 +22,13 @@ #include #include #include -#include +#include #include #include "ct.h" +#ifdef HAVE_WXWINDOWS +#include "../src/ctsim.h" +#endif /* NAME * sys_error System error handler @@ -39,22 +42,23 @@ */ static int s_reportErrorLevel = ERR_WARNING; // Set error reporting level - -bool g_bRunningWXWindows = false; + void sys_error (int severity, const char *msg, ...) { va_list arg; va_start(arg, msg); - + std::string strOutput; sys_verror (strOutput, severity, msg, arg); - -// if (g_bRunningWXWindows) -// theApp->getLog() << strOutput.c_str(); -// else - std::cout << strOutput; + +#ifdef HAVE_WXWINDOWS + if (g_bRunningWXWindows) + wxLog::OnLog (wxLOG_Message, strOutput.c_str(), time(NULL)); + else +#endif + std::cout << strOutput; va_end(arg); } @@ -68,9 +72,9 @@ void sys_verror (std::string& strOutput, int severity, const char *msg, va_list if (severity < s_reportErrorLevel) return; // ignore error if less than reporting level - std::ostringstream os; + std::ostringstream os; - s_nErrorCount++; + s_nErrorCount++; if (severity != ERR_FATAL) { if (s_nErrorCount > MAX_ERROR_COUNT) return; @@ -79,7 +83,7 @@ void sys_verror (std::string& strOutput, int severity, const char *msg, va_list os << "*** M A X I M U M E R R O R C O U N T R E A C H E D ***\n"; os << "*** ***\n"; os << "*** No further errors will be reported ***\n"; - os << "*****************************************************************\n"; + os << "*****************************************************************\n"; strOutput = os.str(); return; } @@ -94,29 +98,31 @@ void sys_verror (std::string& strOutput, int severity, const char *msg, va_list break; case ERR_WARNING: os << "WARNING ERROR: "; - break; - case ERR_TRACE: - os << "Trace: "; + break; + case ERR_TRACE: + os << "Trace: "; break; default: os << "Illegal error severity #" << severity << ": "; } - char errStr[2000]; + char errStr[2000]; #if HAVE_VSNPRINTF vsnprintf (errStr, sizeof(errStr), msg, arg); #elif HAVE_VSPRINTF - vsprintf (errStr, msg, arg); -#else + vsprintf (errStr, msg, arg); +#else strncpy (errStr, sizeof(errStr), "Error message not available on this platform."); #endif - os << errStr << std::endl; - strOutput = os.str(); + os << errStr << "\n"; + strOutput = os.str(); - if (severity == ERR_FATAL) - throw std::runtime_error (errStr); + if (severity == ERR_FATAL) { + std::cerr << strOutput; + throw std::runtime_error (strOutput); + } #if INTERACTIVE_ERROR_DISPLAY std::cout << "A - Abort C - Continue W - Turn off warnings? "; @@ -160,7 +166,7 @@ sys_error_level (int severity) { if (severity == ERR_FATAL || severity == ERR_SEVERE || - severity == ERR_WARNING || + severity == ERR_WARNING || severity == ERR_TRACE) s_reportErrorLevel = severity; else