| [hatari-devel] Win32 console patch |
[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]
|
Hi,
Find attached a patch that allows to run Hatari from a windows commandline, and see any debug output without having to specify -W parameter. This might also have the benefit of speeding up output, since output now goes to the console of the command-shell, not that of the application.
The -W parameter is still needed when you are running the application from the desktop. In this case it behaves as before.
|
diff --git a/src/gui-win/opencon.c b/src/gui-win/opencon.c
index f245cf63..e8a46f0e 100644
--- a/src/gui-win/opencon.c
+++ b/src/gui-win/opencon.c
@@ -17,14 +17,47 @@
#include "opencon.h"
#include "../includes/configuration.h"
+#ifdef __CYGWIN__
+#define CONSOLE_DEV "/dev/tty"
+#else
+#define CONSOLE_DEV "CON"
+#endif
+
void Win_OpenCon(void)
{
if (ConfigureParams.Log.bConsoleWindow)
{
- AllocConsole();
- freopen("CON", "w", stdout);
- freopen("CON", "r", stdin);
- freopen("CON", "w", stderr);
+ if (AllocConsole())
+ {
+ freopen(CONSOLE_DEV, "w", stdout);
+ freopen(CONSOLE_DEV, "r", stdin);
+ freopen(CONSOLE_DEV, "w", stderr);
+ }
+ }
+ else
+ {
+ HANDLE my_stdout;
+ HANDLE my_stderr;
+ DWORD filetype_out;
+ DWORD filetype_err;
+
+ my_stdout = GetStdHandle(STD_OUTPUT_HANDLE);
+ my_stderr = GetStdHandle(STD_ERROR_HANDLE);
+ filetype_out = GetFileType(my_stdout);
+ filetype_err = GetFileType(my_stderr);
+ if (my_stdout == INVALID_HANDLE_VALUE ||
+ filetype_out == FILE_TYPE_UNKNOWN ||
+ my_stderr == INVALID_HANDLE_VALUE ||
+ filetype_err == FILE_TYPE_UNKNOWN)
+ {
+ if (AttachConsole(ATTACH_PARENT_PROCESS))
+ {
+ if (my_stdout == INVALID_HANDLE_VALUE || filetype_out == FILE_TYPE_UNKNOWN)
+ freopen(CONSOLE_DEV, "w", stdout);
+ if (my_stderr == INVALID_HANDLE_VALUE || filetype_err == FILE_TYPE_UNKNOWN)
+ freopen(CONSOLE_DEV, "w", stderr);
+ }
+ }
}
}
diff --git a/src/main.c b/src/main.c
index db8760fd..7f0c7f30 100644
--- a/src/main.c
+++ b/src/main.c
@@ -937,7 +937,7 @@ int main(int argc, char *argv[])
/* monitor type option might require "reset" -> true */
Configuration_Apply(true);
-#ifdef WIN32
+#if defined(_WIN32) || defined(__CYGWIN__)
Win_OpenCon();
#endif
| Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |