зеркало из https://github.com/mozilla/gecko-dev.git
Bugzilla bug 236228: fixed the remaining problems with logFile == WinDebug
by moving the WinDebug handling code into the _PUT_LOG macro. The patch is contributed by timeless@bemail.org. r=wtc.
This commit is contained in:
Родитель
3be018dd44
Коммит
5e66901da1
|
@ -111,8 +111,21 @@ static PRLock *_pr_logLock;
|
||||||
|
|
||||||
/* Macros used to reduce #ifdef pollution */
|
/* Macros used to reduce #ifdef pollution */
|
||||||
|
|
||||||
#if defined(_PR_USE_STDIO_FOR_LOGGING)
|
#if defined(_PR_USE_STDIO_FOR_LOGGING) && defined(XP_PC)
|
||||||
#define _PUT_LOG(fd, buf, nb) {fputs(buf, fd); fflush(fd);}
|
#define _PUT_LOG(fd, buf, nb) \
|
||||||
|
PR_BEGIN_MACRO \
|
||||||
|
if (logFile == WIN32_DEBUG_FILE) { \
|
||||||
|
char savebyte = buf[nb]; \
|
||||||
|
buf[nb] = '\0'; \
|
||||||
|
OutputDebugString(buf); \
|
||||||
|
buf[nb] = savebyte; \
|
||||||
|
} else { \
|
||||||
|
fwrite(buf, 1, nb, fd); \
|
||||||
|
fflush(fd); \
|
||||||
|
} \
|
||||||
|
PR_END_MACRO
|
||||||
|
#elif defined(_PR_USE_STDIO_FOR_LOGGING)
|
||||||
|
#define _PUT_LOG(fd, buf, nb) {fwrite(buf, 1, nb, fd); fflush(fd);}
|
||||||
#elif defined(_PR_PTHREADS)
|
#elif defined(_PR_PTHREADS)
|
||||||
#define _PUT_LOG(fd, buf, nb) PR_Write(fd, buf, nb)
|
#define _PUT_LOG(fd, buf, nb) PR_Write(fd, buf, nb)
|
||||||
#elif defined(XP_MAC)
|
#elif defined(XP_MAC)
|
||||||
|
@ -348,8 +361,8 @@ PR_IMPLEMENT(PRLogModuleInfo*) PR_NewLogModule(const char *name)
|
||||||
lm->level = PR_LOG_NONE;
|
lm->level = PR_LOG_NONE;
|
||||||
lm->next = logModules;
|
lm->next = logModules;
|
||||||
logModules = lm;
|
logModules = lm;
|
||||||
}
|
|
||||||
_PR_SetLogModuleLevel(lm);
|
_PR_SetLogModuleLevel(lm);
|
||||||
|
}
|
||||||
return lm;
|
return lm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -407,7 +420,6 @@ PR_IMPLEMENT(void) PR_SetLogBuffering(PRIntn buffer_size)
|
||||||
|
|
||||||
if (logBuf)
|
if (logBuf)
|
||||||
PR_DELETE(logBuf);
|
PR_DELETE(logBuf);
|
||||||
logBuf = 0;
|
|
||||||
|
|
||||||
if (buffer_size >= LINE_BUF_SIZE) {
|
if (buffer_size >= LINE_BUF_SIZE) {
|
||||||
logp = logBuf = (char*) PR_MALLOC(buffer_size);
|
logp = logBuf = (char*) PR_MALLOC(buffer_size);
|
||||||
|
@ -459,14 +471,7 @@ PR_IMPLEMENT(void) PR_LogPrint(const char *fmt, ...)
|
||||||
|
|
||||||
_PR_LOCK_LOG();
|
_PR_LOCK_LOG();
|
||||||
if (logBuf == 0) {
|
if (logBuf == 0) {
|
||||||
#ifdef XP_PC
|
|
||||||
if ( logFile == WIN32_DEBUG_FILE)
|
|
||||||
OutputDebugString( line );
|
|
||||||
else
|
|
||||||
_PUT_LOG(logFile, line, nb);
|
_PUT_LOG(logFile, line, nb);
|
||||||
#else
|
|
||||||
_PUT_LOG(logFile, line, nb);
|
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
if (logp + nb > logEndp) {
|
if (logp + nb > logEndp) {
|
||||||
_PUT_LOG(logFile, logBuf, logp - logBuf);
|
_PUT_LOG(logFile, logBuf, logp - logBuf);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче