From 26d6eb4a8ab4052d7f873ca0cc2c6b68f3d41a44 Mon Sep 17 00:00:00 2001 From: Martin Herkt Date: Thu, 16 Jan 2014 11:25:52 +0100 Subject: [PATCH] io/win32: move mp_attach_console to terminal-win.c Why didn't I put it there from the start? --- osdep/io.c | 22 ---------------------- osdep/io.h | 1 - osdep/terminal-win.c | 17 +++++++++++++++++ player/main.c | 1 - 4 files changed, 17 insertions(+), 24 deletions(-) diff --git a/osdep/io.c b/osdep/io.c index b348890533..2e2603eb7f 100644 --- a/osdep/io.c +++ b/osdep/io.c @@ -327,26 +327,4 @@ char *mp_getenv(const char *name) return NULL; } -void mp_attach_console(void) -{ - if (AttachConsole(ATTACH_PARENT_PROCESS)) { - // We have been started by something with a console window. - // Redirect output streams to that console's low-level handles, - // so we can actually use WriteConsole later on. - - int hConHandle; - intptr_t hStdio; - - hStdio = (intptr_t)GetStdHandle(STD_OUTPUT_HANDLE); - hConHandle = _open_osfhandle(hStdio, _O_TEXT); - *stdout = *_fdopen(hConHandle, "w"); - setvbuf(stdout, NULL, _IONBF, 0); - - hStdio = (intptr_t)GetStdHandle(STD_ERROR_HANDLE); - hConHandle = _open_osfhandle(hStdio, _O_TEXT); - *stderr = *_fdopen(hConHandle, "w"); - setvbuf(stderr, NULL, _IONBF, 0); - } -} - #endif // __MINGW32__ diff --git a/osdep/io.h b/osdep/io.h index 7c20d262b0..9f715d904e 100644 --- a/osdep/io.h +++ b/osdep/io.h @@ -77,7 +77,6 @@ struct dirent *mp_readdir(DIR *dir); int mp_closedir(DIR *dir); int mp_mkdir(const char *path, int mode); char *mp_getenv(const char *name); -void mp_attach_console(void); // NOTE: stat is not overridden with mp_stat, because MinGW-w64 defines it as // macro. diff --git a/osdep/terminal-win.c b/osdep/terminal-win.c index 1ecb520f94..9d49936d70 100644 --- a/osdep/terminal-win.c +++ b/osdep/terminal-win.c @@ -24,6 +24,7 @@ #include "config.h" +#include #include #include #include @@ -238,6 +239,22 @@ void terminal_set_foreground_color(FILE *stream, int c) int terminal_init(void) { + if (AttachConsole(ATTACH_PARENT_PROCESS)) { + // We have been started by something with a console window. + // Redirect output streams to that console's low-level handles, + // so we can actually use WriteConsole later on. + + int hConHandle; + + hConHandle = _open_osfhandle((intptr_t)hSTDOUT, _O_TEXT); + *stdout = *_fdopen(hConHandle, "w"); + setvbuf(stdout, NULL, _IONBF, 0); + + hConHandle = _open_osfhandle((intptr_t)hSTDERR, _O_TEXT); + *stderr = *_fdopen(hConHandle, "w"); + setvbuf(stderr, NULL, _IONBF, 0); + } + CONSOLE_SCREEN_BUFFER_INFO cinfo; DWORD cmode = 0; GetConsoleMode(hSTDOUT, &cmode); diff --git a/player/main.c b/player/main.c index ff9f7b732a..75cad76b80 100644 --- a/player/main.c +++ b/player/main.c @@ -249,7 +249,6 @@ static void osdep_preinit(int *p_argc, char ***p_argv) talloc_enable_leak_report(); #ifdef __MINGW32__ - mp_attach_console(); mp_get_converted_argv(p_argc, p_argv); #endif