summaryrefslogtreecommitdiffstats
path: root/core/windows.c
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2017-02-02 21:50:47 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-02-03 09:24:42 -0800
commit4a894e0713910e68a8744a3b34b95a91b31cabde (patch)
treea0a0b78e286d5b46112eaa8c2562aac5abd3b709 /core/windows.c
parent7c8461a328c6d93a89aeb4358bacf0201e940f35 (diff)
downloadsubsurface-4a894e0713910e68a8744a3b34b95a91b31cabde.tar.gz
Win32: add the --win32log option to log stdout and stderr to files
Adding --win32log as the first command line option on Windows will now log all stdout and stderr output to the files subsurface_err.log and subsurface_out.log in the working directory. This change required a new argument 'bool logfile' to be added to: subsurface_console_init() which is defined in all platform files (linux.c, macos.c, etc.) Example usage: subsurface.exe --win32log -v -v -v Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Diffstat (limited to 'core/windows.c')
-rw-r--r--core/windows.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/core/windows.c b/core/windows.c
index 58d3beaad..a94d7dda5 100644
--- a/core/windows.c
+++ b/core/windows.c
@@ -377,11 +377,12 @@ static struct {
FILE *out, *err;
} console_desc;
-void subsurface_console_init(bool dedicated)
+void subsurface_console_init(bool dedicated, bool logfile)
{
(void)console_desc;
/* if this is a console app already, do nothing */
#ifndef WIN32_CONSOLE_APP
+
/* just in case of multiple calls */
memset((void *)&console_desc, 0, sizeof(console_desc));
/* the AttachConsole(..) call can be used to determine if the parent process
@@ -421,9 +422,12 @@ void subsurface_console_init(bool dedicated)
SetConsoleCtrlHandler(NULL, TRUE); /* disable the CTRL handler */
}
+ const char *location_out = logfile ? "subsurface_out.log" : "CON";
+ const char *location_err = logfile ? "subsurface_err.log" : "CON";
+
/* redirect; on win32, CON is a reserved pipe target, like NUL */
- console_desc.out = freopen("CON", "w", stdout);
- console_desc.err = freopen("CON", "w", stderr);
+ console_desc.out = freopen(location_out, "w", stdout);
+ console_desc.err = freopen(location_err, "w", stderr);
if (!dedicated)
puts(""); /* add an empty line */
#endif