X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/975dc6910e8169e8a996b51de6b16f5cd3ed10a4..ea160f01c60cfc879e1ba3ffec76d113a0404603:/src/common/log.cpp diff --git a/src/common/log.cpp b/src/common/log.cpp index 13ea6a0b9c..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; @@ -858,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 @@ -904,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() @@ -1050,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; @@ -1063,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 @@ -1111,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), @@ -1120,7 +1127,7 @@ const wxChar *wxSysErrorMsg(unsigned long nErrCode) #else return strerror((int)nErrCode); #endif -#endif // __WXMSW__/!__WXMSW__ +#endif // __WINDOWS__/!__WINDOWS__ } #endif // wxUSE_LOG