mirror of
https://github.com/ascii-boxes/boxes.git
synced 2024-12-04 14:03:53 +01:00
Activate ANSI processing on older terminals on Windows
This commit is contained in:
parent
00fdedd302
commit
35c4bb351e
28
src/boxes.c
28
src/boxes.c
@ -469,6 +469,31 @@ static void activateSystemEncoding()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On some (presumably older) Windows (like Windows 10), we must enable ANSI code support in the terminal.
|
||||||
|
*/
|
||||||
|
void enable_ansi_mode() {
|
||||||
|
#if defined(_WIN32) || defined(__MINGW32__)
|
||||||
|
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||||
|
if (hOut == INVALID_HANDLE_VALUE) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DWORD dwMode = 0;
|
||||||
|
if (!GetConsoleMode(hOut, &dwMode)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
|
||||||
|
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
|
||||||
|
#endif
|
||||||
|
dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING | ENABLE_PROCESSED_OUTPUT;
|
||||||
|
SetConsoleMode(hOut, dwMode);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* _\|/_
|
/* _\|/_
|
||||||
(o o)
|
(o o)
|
||||||
+----oOO-{_}-OOo------------------------------------------------------------+
|
+----oOO-{_}-OOo------------------------------------------------------------+
|
||||||
@ -481,8 +506,6 @@ int main(int argc, char *argv[])
|
|||||||
int saved_designwidth; /* opt.design->minwith backup, used for mending */
|
int saved_designwidth; /* opt.design->minwith backup, used for mending */
|
||||||
int saved_designheight; /* opt.design->minheight backup, used for mending */
|
int saved_designheight; /* opt.design->minheight backup, used for mending */
|
||||||
|
|
||||||
log_debug(__FILE__, MAIN, "BOXES STARTING ...\n"); /* TODO This line will never execute, because debug not on yet */
|
|
||||||
|
|
||||||
/* Temporarily set the system encoding, for proper output of --help text etc. */
|
/* Temporarily set the system encoding, for proper output of --help text etc. */
|
||||||
activateSystemEncoding();
|
activateSystemEncoding();
|
||||||
encoding = locale_charset();
|
encoding = locale_charset();
|
||||||
@ -494,6 +517,7 @@ int main(int argc, char *argv[])
|
|||||||
log_debug(__FILE__, MAIN, "Character Encoding = %s\n", encoding);
|
log_debug(__FILE__, MAIN, "Character Encoding = %s\n", encoding);
|
||||||
|
|
||||||
color_output_enabled = check_color_support(opt.color);
|
color_output_enabled = check_color_support(opt.color);
|
||||||
|
enable_ansi_mode();
|
||||||
|
|
||||||
handle_config_parsing();
|
handle_config_parsing();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user