diff options
author | iDunk5400 <iDunk5400@users.noreply.github.com> | 2017-11-09 21:11:20 +0100 |
---|---|---|
committer | iDunk5400 <iDunk5400@users.noreply.github.com> | 2018-10-08 14:56:16 +0200 |
commit | 2e2daebcc9c2e664070670efb3cad81618567f0b (patch) | |
tree | 37f2cda440715d11dba62a7d62f4e2cf2f337e5b /contrib | |
parent | Merge pull request #4036 (diff) | |
download | monero-2e2daebcc9c2e664070670efb3cad81618567f0b.tar.xz |
ANSI colors in Windows 10
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/epee/src/mlog.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/contrib/epee/src/mlog.cpp b/contrib/epee/src/mlog.cpp index 61d853ef4..638155b6b 100644 --- a/contrib/epee/src/mlog.cpp +++ b/contrib/epee/src/mlog.cpp @@ -28,6 +28,13 @@ #ifndef _MLOG_H_ #define _MLOG_H_ +#ifdef _WIN32 +#include <windows.h> +#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING +#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 +#endif +#endif + #include <time.h> #include <atomic> #include <boost/filesystem.hpp> @@ -117,6 +124,31 @@ static const char *get_default_categories(int level) return categories; } +#ifdef WIN32 +bool EnableVTMode() +{ + // Set output mode to handle virtual terminal sequences + HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); + if (hOut == INVALID_HANDLE_VALUE) + { + return false; + } + + DWORD dwMode = 0; + if (!GetConsoleMode(hOut, &dwMode)) + { + return false; + } + + dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; + if (!SetConsoleMode(hOut, dwMode)) + { + return false; + } + return true; +} +#endif + void mlog_configure(const std::string &filename_base, bool console, const std::size_t max_log_file_size, const std::size_t max_log_files) { el::Configurations c; @@ -202,6 +234,9 @@ void mlog_configure(const std::string &filename_base, bool console, const std::s monero_log = get_default_categories(0); } mlog_set_log(monero_log); +#ifdef WIN32 + EnableVTMode(); +#endif } void mlog_set_categories(const char *categories) |