33 #ifdef HAVE_SYS_FILE_H
37 #if defined(HAVE_SHARE_H) || defined(_WIN32)
54 #elif defined(HAVE_SYS_FILE_H)
62 #if !defined(_WIN32) && defined(HAVE_SYS_FILE_H)
74 #if !defined(_WIN32) && defined(HAVE_SYS_FILE_H)
91 #elif defined(HAVE_SYS_FILE_H)
95 DebugLog(
"Couldn't lock shader log file, closing.");
130 if (!szMessage)
return false;
133 time_t timenow; time(&timenow);
136 strftime(TimeMessage.
getMData(), 11 + 1,
"[%H:%M:%S] ", localtime(&timenow));
139 const char *pSrc = szMessage;
143 char *pDest = TimeMessage.
getMData() + 11;
151 while (*pSrc ==
'\r') pSrc++;
152 if (*pSrc ==
'\n') { pSrc++;
break; }
154 if (*pSrc) *pDest++ = *pSrc++;
156 *pDest++=
'\n'; *pDest =
'\0';
181 if (IsDebuggerPresent())
182 OutputDebugString(TimeMessage.GetWideChar());
186 fputs(TimeMessage.
getData(),stdout);
204 bool Log(
const char *szMessage)
209 if (!szMessage)
return false;
214 pDebug->OnLog(szMessage);
220 if (pLobby) pLobby->
OnLog(szMessage);
223 bool fNotifyMsgBoard =
false;
227 fNotifyMsgBoard =
true;
241 if (!szMessage) szMessage =
"(null)";
262 bool LogF(
const char *strMessage, ...)
264 va_list args; va_start(args, strMessage);
274 va_list args; va_start(args, strMessage);
285 return Log(strMessage);
292 va_list args; va_start(args, strMessage);
306 if (!iLength) { rsOut.
Clear();
return true; }
314 if (iStart + iLength >
iSize) iLength =
iSize - iStart;
315 szBuf += iStart; szBuf[iLength] =
'\0';
317 char *szPosWrite=szBuf;
const char *szPosRead=szBuf;
321 if (*szPosRead ==
'[')
322 while (*szPosRead && *szPosRead !=
']') { --
iSize; ++szPosRead; }
324 if (!*szPosRead)
break;
328 while (*szPosRead && *szPosRead != 0x0d && *szPosRead != 0x0a)
329 { ++szPosRead; ++iLen; }
330 if (iLen && szPosRead-iLen != szPosWrite) memmove(szPosWrite, szPosRead-iLen, iLen);
333 while (*szPosRead == 0x0d || *szPosRead == 0x0a) ++szPosRead;
335 if (*szPosRead) *szPosWrite++ =
'|';
338 rsOut.
Copy(szBuf, szPosWrite - szBuf);
348 if (!szMessage)
return false;
358 va_list args; va_start(args, strMessage);
C4Application Application
C4GraphicsSystem GraphicsSystem
const char * LoadResStr(const char *id)
bool ShaderLog(const char *szMessage)
bool GetLogSection(size_t iStart, size_t iLength, StdStrBuf &rsOut)
bool LogSilent(const char *szMessage, bool fConsole)
bool ShaderLogF(const char *strMessage ...)
bool Log(const char *szMessage)
bool DebugLog(const char *strMessage)
bool LogSilentF(const char *strMessage,...)
const char * GetFatalError()
bool LogF(const char *strMessage,...)
bool LogFatal(const char *szMessage)
bool DebugLogF(const char *strMessage ...)
const char * SSearch(const char *szString, const char *szIndex)
size_t SLen(const char *sptr)
StdStrBuf FormatString(const char *szFmt,...)
size_t FileSize(const char *fname)
static C4AulDebug * GetDebugger()
const char * AtUserDataPath(const char *filename)
void Out(const char *message)
void OnLog(const char *szLogMsg, DWORD dwClr=C4GUI_LogFontClr)
std::unique_ptr< C4MessageBoard > MessageBoard
bool SkipTags(const char **ppText)
class C4GameLobby::MainDlg * GetLobby() const
bool Write(const void *pBuffer, int iSize)
void SetLength(size_t iLength)
void FormatV(const char *szFmt, va_list args)
const char * getData() const
void AppendChar(char cChar)
bool LoadFromFile(const char *szFile)
void Append(const char *pnData, size_t iChars)
void Format(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O