]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/consolecolors.h
Add irc::sockets::isunix for checking if a file is a UNIX socket.
[user/henk/code/inspircd.git] / include / consolecolors.h
index d92be58bc706f9dafa78f9771ad671a1f2f1eda7..8d154f7ee5eead60d71fcda19038b9c1a01b4fb4 100644 (file)
 #pragma once
 
 #include <ostream>
+#include <stdio.h>
+
+#ifdef _WIN32
+# include <io.h>
+# define isatty(x) _isatty((x))
+# define fileno(x) _fileno((x))
+#else
+# include <unistd.h>
+#endif
+
+namespace
+{
+       inline bool CanUseColors()
+       {
+#ifdef INSPIRCD_DISABLE_COLORS
+               return false;
+#else
+               return isatty(fileno(stdout));
+#endif
+       }
+}
 
 #ifdef _WIN32
 
@@ -29,37 +50,43 @@ extern HANDLE g_hStdout;
 
 inline std::ostream& con_green(std::ostream &s)
 {
-       SetConsoleTextAttribute(g_hStdout, FOREGROUND_GREEN|FOREGROUND_INTENSITY|g_wBackgroundColor);
+       if (CanUseColors())
+               SetConsoleTextAttribute(g_hStdout, FOREGROUND_GREEN|FOREGROUND_INTENSITY|g_wBackgroundColor);
        return s;
 }
 
 inline std::ostream& con_red(std::ostream &s)
 {
-       SetConsoleTextAttribute(g_hStdout, FOREGROUND_RED|FOREGROUND_INTENSITY|g_wBackgroundColor);
+       if (CanUseColors())
+               SetConsoleTextAttribute(g_hStdout, FOREGROUND_RED|FOREGROUND_INTENSITY|g_wBackgroundColor);
        return s;
 }
 
 inline std::ostream& con_white(std::ostream &s)
 {
-       SetConsoleTextAttribute(g_hStdout, FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN|g_wBackgroundColor);
+       if (CanUseColors())
+               SetConsoleTextAttribute(g_hStdout, FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN|g_wBackgroundColor);
        return s;
 }
 
 inline std::ostream& con_white_bright(std::ostream &s)
 {
-       SetConsoleTextAttribute(g_hStdout, FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_INTENSITY|g_wBackgroundColor);
+       if (CanUseColors())
+               SetConsoleTextAttribute(g_hStdout, FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_INTENSITY|g_wBackgroundColor);
        return s;
 }
 
 inline std::ostream& con_bright(std::ostream &s)
 {
-       SetConsoleTextAttribute(g_hStdout, FOREGROUND_INTENSITY|g_wBackgroundColor);
+       if (CanUseColors())
+               SetConsoleTextAttribute(g_hStdout, FOREGROUND_INTENSITY|g_wBackgroundColor);
        return s;
 }
 
 inline std::ostream& con_reset(std::ostream &s)
 {
-       SetConsoleTextAttribute(g_hStdout, g_wOriginalColors);
+       if (CanUseColors())
+               SetConsoleTextAttribute(g_hStdout, g_wOriginalColors);
        return s;
 }
 
@@ -67,31 +94,43 @@ inline std::ostream& con_reset(std::ostream &s)
 
 inline std::ostream& con_green(std::ostream &s)
 {
+       if (!CanUseColors())
+               return s;
        return s << "\033[1;32m";
 }
 
 inline std::ostream& con_red(std::ostream &s)
 {
+       if (!CanUseColors())
+               return s;
        return s << "\033[1;31m";
 }
 
 inline std::ostream& con_white(std::ostream &s)
 {
+       if (!CanUseColors())
+               return s;
        return s << "\033[0m";
 }
 
 inline std::ostream& con_white_bright(std::ostream &s)
 {
+       if (!CanUseColors())
+               return s;
        return s << "\033[1m";
 }
 
 inline std::ostream& con_bright(std::ostream &s)
 {
+       if (!CanUseColors())
+               return s;
        return s << "\033[1m";
 }
 
 inline std::ostream& con_reset(std::ostream &s)
 {
+       if (!CanUseColors())
+               return s;
        return s << "\033[0m";
 }