X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=include%2Fconsolecolors.h;h=fdc351f5a4b6e52059d5c0d1148ba6e7c6060318;hb=8df3d792bc99d9dd73db7a601ebe8d4a397c3522;hp=f7ca1335ed244f16514d457d4fa035971fab2996;hpb=12c0e5d76395ae6348f5d411fef50aa777433f02;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/consolecolors.h b/include/consolecolors.h index f7ca1335e..fdc351f5a 100644 --- a/include/consolecolors.h +++ b/include/consolecolors.h @@ -1,6 +1,10 @@ /* * InspIRCd -- Internet Relay Chat Daemon * + * Copyright (C) 2019 linuxdaemon + * Copyright (C) 2013, 2019 Sadie Powell + * Copyright (C) 2012 ChrisTX + * * This file is part of InspIRCd. InspIRCd is free software: you can * redistribute it and/or modify it under the terms of the GNU General Public * License as published by the Free Software Foundation, version 2. @@ -14,10 +18,31 @@ * along with this program. If not, see . */ -#ifndef CONSOLECOLORS_H -#define CONSOLECOLORS_H + +#pragma once #include +#include + +#ifdef _WIN32 +# include +# define isatty(x) _isatty((x)) +# define fileno(x) _fileno((x)) +#else +# include +#endif + +namespace +{ + inline bool CanUseColors() + { +#ifdef INSPIRCD_DISABLE_COLORS + return false; +#else + return isatty(fileno(stdout)); +#endif + } +} #ifdef _WIN32 @@ -27,74 +52,90 @@ extern WORD g_wOriginalColors; extern WORD g_wBackgroundColor; extern HANDLE g_hStdout; -inline std::ostream& con_green(std::ostream &s) +inline std::ostream& con_green(std::ostream& stream) { - SetConsoleTextAttribute(g_hStdout, FOREGROUND_GREEN|FOREGROUND_INTENSITY|g_wBackgroundColor); - return s; + if (CanUseColors()) + SetConsoleTextAttribute(g_hStdout, FOREGROUND_GREEN|FOREGROUND_INTENSITY|g_wBackgroundColor); + return stream; } -inline std::ostream& con_red(std::ostream &s) +inline std::ostream& con_red(std::ostream& stream) { - SetConsoleTextAttribute(g_hStdout, FOREGROUND_RED|FOREGROUND_INTENSITY|g_wBackgroundColor); - return s; + if (CanUseColors()) + SetConsoleTextAttribute(g_hStdout, FOREGROUND_RED|FOREGROUND_INTENSITY|g_wBackgroundColor); + return stream; } -inline std::ostream& con_white(std::ostream &s) +inline std::ostream& con_white(std::ostream& stream) { - SetConsoleTextAttribute(g_hStdout, FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN|g_wBackgroundColor); - return s; + if (CanUseColors()) + SetConsoleTextAttribute(g_hStdout, FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN|g_wBackgroundColor); + return stream; } -inline std::ostream& con_white_bright(std::ostream &s) +inline std::ostream& con_white_bright(std::ostream& stream) { - SetConsoleTextAttribute(g_hStdout, FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_INTENSITY|g_wBackgroundColor); - return s; + if (CanUseColors()) + SetConsoleTextAttribute(g_hStdout, FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_INTENSITY|g_wBackgroundColor); + return stream; } -inline std::ostream& con_bright(std::ostream &s) +inline std::ostream& con_bright(std::ostream& stream) { - SetConsoleTextAttribute(g_hStdout, FOREGROUND_INTENSITY|g_wBackgroundColor); - return s; + if (CanUseColors()) + SetConsoleTextAttribute(g_hStdout, FOREGROUND_INTENSITY|g_wBackgroundColor); + return stream; } -inline std::ostream& con_reset(std::ostream &s) +inline std::ostream& con_reset(std::ostream& stream) { - SetConsoleTextAttribute(g_hStdout, g_wOriginalColors); - return s; + if (CanUseColors()) + SetConsoleTextAttribute(g_hStdout, g_wOriginalColors); + return stream; } #else -inline std::ostream& con_green(std::ostream &s) +inline std::ostream& con_green(std::ostream& stream) { - return s << "\033[1;32m"; + if (!CanUseColors()) + return stream; + return stream << "\033[1;32m"; } -inline std::ostream& con_red(std::ostream &s) +inline std::ostream& con_red(std::ostream& stream) { - return s << "\033[1;31m"; + if (!CanUseColors()) + return stream; + return stream << "\033[1;31m"; } -inline std::ostream& con_white(std::ostream &s) +inline std::ostream& con_white(std::ostream& stream) { - return s << "\033[0m"; + if (!CanUseColors()) + return stream; + return stream << "\033[0m"; } -inline std::ostream& con_white_bright(std::ostream &s) +inline std::ostream& con_white_bright(std::ostream& stream) { - return s << "\033[1m"; + if (!CanUseColors()) + return stream; + return stream << "\033[1m"; } -inline std::ostream& con_bright(std::ostream &s) +inline std::ostream& con_bright(std::ostream& stream) { - return s << "\033[1m"; + if (!CanUseColors()) + return stream; + return stream << "\033[1m"; } -inline std::ostream& con_reset(std::ostream &s) +inline std::ostream& con_reset(std::ostream& stream) { - return s << "\033[0m"; + if (!CanUseColors()) + return stream; + return stream << "\033[0m"; } #endif - -#endif