503b3e65b83aaeabda220a9123dfab975c129591
[tinc] / console.c
1 #include "system.h"
2
3 #include "console.h"
4
5 bool use_ansi_escapes(FILE *out) {
6         bool is_tty = isatty(fileno(out));
7
8 #ifndef HAVE_WINDOWS
9         const char *term = getenv("TERM");
10         return is_tty && term && strcmp(term, "dumb");
11 #else
12         HANDLE console;
13
14         if(out == stdout) {
15                 console = GetStdHandle(STD_OUTPUT_HANDLE);
16         } else if(out == stderr) {
17                 console = GetStdHandle(STD_ERROR_HANDLE);
18         } else {
19                 return false;
20         }
21
22         DWORD mode = 0;
23         return is_tty &&
24                console != INVALID_HANDLE_VALUE &&
25                GetConsoleMode(console, &mode) &&
26                SetConsoleMode(console, mode | ENABLE_VIRTUAL_TERMINAL_PROCESSING);
27 #endif
28 }