Linux/MacOS - only write colour codes to TTYs
This prevents the colour codes from showing up in piped output, file redirects, etc.
This commit is contained in:
@@ -27,9 +27,11 @@
|
||||
#ifndef _PreComp_
|
||||
# include <time.h>
|
||||
# include <stdio.h>
|
||||
# ifdef FC_OS_WIN32
|
||||
# include <io.h>
|
||||
# include <windows.h>
|
||||
# if defined (FC_OS_WIN32)
|
||||
# include <io.h>
|
||||
# include <windows.h>
|
||||
# elif defined(FC_OS_LINUX) || defined(FC_OS_MACOSX)
|
||||
# include <unistd.h>
|
||||
# endif
|
||||
# include "fcntl.h"
|
||||
#endif
|
||||
@@ -633,7 +635,12 @@ void ConsoleObserverFile::Log (const char *sLog)
|
||||
}
|
||||
|
||||
|
||||
ConsoleObserverStd::ConsoleObserverStd()
|
||||
ConsoleObserverStd::ConsoleObserverStd():
|
||||
# if defined(FC_OS_WIN32)
|
||||
useColorStderr( true )
|
||||
# elif defined(FC_OS_LINUX) || defined(FC_OS_MACOSX)
|
||||
useColorStderr( isatty(STDOUT_FILENO) )
|
||||
# endif
|
||||
{
|
||||
bLog = false;
|
||||
}
|
||||
@@ -649,50 +656,68 @@ void ConsoleObserverStd::Message(const char *sMsg)
|
||||
|
||||
void ConsoleObserverStd::Warning(const char *sWarn)
|
||||
{
|
||||
if (useColorStderr) {
|
||||
# if defined(FC_OS_WIN32)
|
||||
::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN| FOREGROUND_BLUE);
|
||||
::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN| FOREGROUND_BLUE);
|
||||
# elif defined(FC_OS_LINUX) || defined(FC_OS_MACOSX)
|
||||
printf("\033[1;33m");
|
||||
printf("\033[1;33m");
|
||||
# endif
|
||||
}
|
||||
|
||||
printf("%s",sWarn);
|
||||
|
||||
if (useColorStderr) {
|
||||
# if defined(FC_OS_WIN32)
|
||||
::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE );
|
||||
::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE );
|
||||
# elif defined(FC_OS_LINUX) || defined(FC_OS_MACOSX)
|
||||
printf("\033[0m");
|
||||
fflush(stdout);
|
||||
printf("\033[0m");
|
||||
fflush(stdout);
|
||||
# endif
|
||||
}
|
||||
}
|
||||
|
||||
void ConsoleObserverStd::Error (const char *sErr)
|
||||
{
|
||||
if (useColorStderr) {
|
||||
# if defined(FC_OS_WIN32)
|
||||
::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED|FOREGROUND_INTENSITY );
|
||||
::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED|FOREGROUND_INTENSITY );
|
||||
# elif defined(FC_OS_LINUX) || defined(FC_OS_MACOSX)
|
||||
printf("\033[1;31m");
|
||||
printf("\033[1;31m");
|
||||
# endif
|
||||
}
|
||||
|
||||
printf("%s",sErr);
|
||||
|
||||
if (useColorStderr) {
|
||||
# if defined(FC_OS_WIN32)
|
||||
::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE );
|
||||
::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE );
|
||||
# elif defined(FC_OS_LINUX) || defined(FC_OS_MACOSX)
|
||||
printf("\033[0m");
|
||||
fflush(stdout);
|
||||
printf("\033[0m");
|
||||
fflush(stdout);
|
||||
# endif
|
||||
}
|
||||
}
|
||||
|
||||
void ConsoleObserverStd::Log (const char *sErr)
|
||||
{
|
||||
if (useColorStderr) {
|
||||
# if defined(FC_OS_WIN32)
|
||||
::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED |FOREGROUND_GREEN);
|
||||
::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED |FOREGROUND_GREEN);
|
||||
# elif defined(FC_OS_LINUX) || defined(FC_OS_MACOSX)
|
||||
printf("\033[1;36m");
|
||||
printf("\033[1;36m");
|
||||
# endif
|
||||
}
|
||||
|
||||
printf("%s",sErr);
|
||||
|
||||
if (useColorStderr) {
|
||||
# if defined(FC_OS_WIN32)
|
||||
::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE );
|
||||
::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE );
|
||||
# elif defined(FC_OS_LINUX) || defined(FC_OS_MACOSX)
|
||||
printf("\033[0m");
|
||||
fflush(stdout);
|
||||
printf("\033[0m");
|
||||
fflush(stdout);
|
||||
# endif
|
||||
}
|
||||
}
|
||||
|
||||
RedirectStdOutput::RedirectStdOutput()
|
||||
|
||||
Reference in New Issue
Block a user