X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e718eb9840a4d4bc5804d44a1ec03a0e6419ccf2..a3b7db872925df2921f36637a84085ec04cf977a:/src/common/log.cpp diff --git a/src/common/log.cpp b/src/common/log.cpp index 7cc809d803..376a93365b 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -53,13 +53,11 @@ #include -#ifndef __WXPALMOS5__ #ifndef __WXWINCE__ #include #else #include "wx/msw/wince/time.h" #endif -#endif /* ! __WXPALMOS5__ */ #if defined(__WINDOWS__) #include "wx/msw/private.h" // includes windows.h @@ -217,9 +215,9 @@ wxLogFormatter::Format(wxLogLevel level, // don't time stamp debug messages under MSW as debug viewers usually // already have an option to do it -#ifdef __WXMSW__ +#ifdef __WINDOWS__ if ( level != wxLOG_Debug && level != wxLOG_Trace ) -#endif // __WXMSW__ +#endif // __WINDOWS__ prefix = FormatTime(info.timestamp); switch ( level ) @@ -234,7 +232,7 @@ wxLogFormatter::Format(wxLogLevel level, // don't prepend "debug/trace" prefix under MSW as it goes to the debug // window anyhow and so can't be confused with something else -#ifndef __WXMSW__ +#ifndef __WINDOWS__ case wxLOG_Debug: // this prefix (as well as the one below) is intentionally not // translated as nobody translates debug messages anyhow @@ -244,7 +242,7 @@ wxLogFormatter::Format(wxLogLevel level, case wxLOG_Trace: prefix += "Trace: "; break; -#endif // !__WXMSW__ +#endif // !__WINDOWS__ } return prefix + msg; @@ -355,11 +353,7 @@ wxLog::OnLog(wxLogLevel level, { wxSafeShowMessage(wxS("Fatal Error"), msg); -#ifdef __WXWINCE__ - ExitThread(3); -#else - abort(); -#endif + wxAbort(); } wxLog *logger; @@ -862,8 +856,10 @@ wxLogStderr::wxLogStderr(FILE *fp) void wxLogStderr::DoLogText(const wxString& msg) { - wxFputs(msg + '\n', m_fp); - fflush(m_fp); + // First send it to stderr, even if we don't have it (e.g. in a Windows GUI + // application under) it's not a problem to try to use it and it's easier + // than determining whether we do have it or not. + wxMessageOutputStderr(m_fp).Output(msg); // under GUI systems such as Windows or Mac, programs usually don't have // stderr at all, so show the messages also somewhere else, typically in @@ -908,7 +904,14 @@ wxLogChain::wxLogChain(wxLog *logger) m_bPassMessages = true; m_logNew = logger; - m_logOld = wxLog::SetActiveTarget(this); + + // Notice that we use GetActiveTarget() here instead of directly calling + // SetActiveTarget() to trigger wxLog auto-creation: if we're created as + // the first logger, we should still chain with the standard, implicit and + // possibly still not created standard logger instead of disabling normal + // logging entirely. + m_logOld = wxLog::GetActiveTarget(); + wxLog::SetActiveTarget(this); } wxLogChain::~wxLogChain() @@ -1054,7 +1057,7 @@ static void wxLogWrap(FILE *f, const char *pszPrefix, const char *psz) // get error code from syste unsigned long wxSysErrorCode() { -#if defined(__WXMSW__) && !defined(__WXMICROWIN__) +#if defined(__WINDOWS__) && !defined(__WXMICROWIN__) return ::GetLastError(); #else //Unix return errno; @@ -1067,7 +1070,7 @@ const wxChar *wxSysErrorMsg(unsigned long nErrCode) if ( nErrCode == 0 ) nErrCode = wxSysErrorCode(); -#if defined(__WXMSW__) && !defined(__WXMICROWIN__) +#if defined(__WINDOWS__) && !defined(__WXMICROWIN__) static wxChar s_szBuf[1024]; // get error message from system @@ -1115,7 +1118,7 @@ const wxChar *wxSysErrorMsg(unsigned long nErrCode) } return s_szBuf; -#else // !__WXMSW__ +#else // !__WINDOWS__ #if wxUSE_UNICODE static wchar_t s_wzBuf[1024]; wxConvCurrent->MB2WC(s_wzBuf, strerror((int)nErrCode), @@ -1124,7 +1127,7 @@ const wxChar *wxSysErrorMsg(unsigned long nErrCode) #else return strerror((int)nErrCode); #endif -#endif // __WXMSW__/!__WXMSW__ +#endif // __WINDOWS__/!__WINDOWS__ } #endif // wxUSE_LOG