From 75c5f57f91073dfc2cdf27f9fe8b21d9faf0689d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Forysiuk?= Date: Mon, 28 Nov 2011 20:37:53 +0100 Subject: [PATCH] Attach Win32 console to stdout if not redirected --- midori/midori-app.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/midori/midori-app.c b/midori/midori-app.c index aa171809..d8502a18 100644 --- a/midori/midori-app.c +++ b/midori/midori-app.c @@ -9,6 +9,12 @@ See the file COPYING for the full license text. */ +/* When cross-compiling assume at least WinXP */ +#ifdef _WIN32 + #define _WIN32_WINNT 0x0501 + #include +#endif + #if HAVE_CONFIG_H #include #endif @@ -1437,5 +1443,28 @@ midori_app_setup (gchar** argument_vector) gtk_icon_factory_add_default (factory); g_object_unref (factory); #endif + + /* Print messages to stdout on Win32 console, cf. AbiWord + * http://svn.abisource.com/abiword/trunk/src/wp/main/win/Win32Main.cpp */ + #ifdef _WIN32 + if (fileno (stdout) != -1 + && _get_osfhandle (fileno (stdout)) != -1) + { + /* stdout is already being redirected to a file */ + } + else + { + typedef BOOL (WINAPI *AttachConsole_t) (DWORD); + AttachConsole_t p_AttachConsole = + (AttachConsole_t) GetProcAddress (GetModuleHandle ("kernel32.dll"), "AttachConsole"); + if (p_AttachConsole != NULL && p_AttachConsole (ATTACH_PARENT_PROCESS)) + { + freopen ("CONOUT$", "w", stdout); + dup2 (fileno (stdout), 1); + freopen ("CONOUT$", "w", stderr); + dup2 (fileno (stderr), 2); + } + } + #endif }