OutputDebugStringF fix for Mac FileVault problem, take 3
(cannot use a CRITICAL_BLOCK because of undefined order calling static destructors; instead, keep debug.log open, and tell people to use copytruncate when doing log rotation) git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@183 1a98c847-1fd6-4fd8-948a-caf3550aa51b
This commit is contained in:
parent
2f7a9997c8
commit
c4679ad0f1
1 changed files with 20 additions and 27 deletions
47
util.cpp
47
util.cpp
|
@ -145,8 +145,6 @@ int GetRandInt(int nMax)
|
|||
|
||||
inline int OutputDebugStringF(const char* pszFormat, ...)
|
||||
{
|
||||
static CCriticalSection cs_OutputDebugStringF;
|
||||
|
||||
int ret = 0;
|
||||
if (fPrintToConsole)
|
||||
{
|
||||
|
@ -158,38 +156,33 @@ inline int OutputDebugStringF(const char* pszFormat, ...)
|
|||
}
|
||||
else
|
||||
{
|
||||
CRITICAL_BLOCK(cs_OutputDebugStringF)
|
||||
{
|
||||
// print to debug.log
|
||||
static FILE* fileout = NULL;
|
||||
static int64 nOpenTime = 0;
|
||||
// print to debug.log
|
||||
static FILE* fileout = NULL;
|
||||
|
||||
if (GetTime()-nOpenTime > 10 * 60)
|
||||
{
|
||||
if (fileout)
|
||||
fclose(fileout);
|
||||
char pszFile[MAX_PATH+100];
|
||||
GetDataDir(pszFile);
|
||||
strlcat(pszFile, "/debug.log", sizeof(pszFile));
|
||||
fileout = fopen(pszFile, "a");
|
||||
nOpenTime = GetTime();
|
||||
}
|
||||
if (fileout)
|
||||
{
|
||||
//// Debug print useful for profiling
|
||||
//fprintf(fileout, " %"PRI64d" ", GetTimeMillis());
|
||||
va_list arg_ptr;
|
||||
va_start(arg_ptr, pszFormat);
|
||||
ret = vfprintf(fileout, pszFormat, arg_ptr);
|
||||
va_end(arg_ptr);
|
||||
fflush(fileout);
|
||||
}
|
||||
if (!fileout)
|
||||
{
|
||||
char pszFile[MAX_PATH+100];
|
||||
GetDataDir(pszFile);
|
||||
strlcat(pszFile, "/debug.log", sizeof(pszFile));
|
||||
fileout = fopen(pszFile, "a");
|
||||
setbuf(fileout, NULL); // unbuffered
|
||||
}
|
||||
if (fileout)
|
||||
{
|
||||
//// Debug print useful for profiling
|
||||
//fprintf(fileout, " %"PRI64d" ", GetTimeMillis());
|
||||
va_list arg_ptr;
|
||||
va_start(arg_ptr, pszFormat);
|
||||
ret = vfprintf(fileout, pszFormat, arg_ptr);
|
||||
va_end(arg_ptr);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __WXMSW__
|
||||
if (fPrintToDebugger)
|
||||
{
|
||||
static CCriticalSection cs_OutputDebugStringF;
|
||||
|
||||
// accumulate a line at a time
|
||||
CRITICAL_BLOCK(cs_OutputDebugStringF)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue