From 68c060405ce04ba34cb0252498e54ab77d57cc4b Mon Sep 17 00:00:00 2001 From: Travis Howell Date: Fri, 26 Sep 2003 00:09:09 +0000 Subject: Add optional define for no console svn-id: r10410 --- base/main.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'base/main.cpp') diff --git a/base/main.cpp b/base/main.cpp index 888203d3cb..ac49cd3ab2 100644 --- a/base/main.cpp +++ b/base/main.cpp @@ -85,6 +85,12 @@ const char *gScummVMFullVersion = "ScummVM 0.5.3cvs (" __DATE__ " " __TIME__ ")" Config *g_config = 0; NewGui *g_gui = 0; +#if defined(WIN32) && defined(NO_CONSOLE) +#include +#define STDOUT_FILE TEXT("stdout.txt") +#define STDERR_FILE TEXT("stderr.txt") +#endif + #if defined(QTOPIA) // FIXME - why exactly is this needed? extern "C" int main(int argc, char *argv[]); @@ -222,6 +228,41 @@ int main(int argc, char *argv[]) { #endif #endif +// Code copied from SDL_main +#if defined(WIN32) && defined(NO_CONSOLE) + + /* Flush the output in case anything is queued */ + fclose(stdout); + fclose(stderr); + + /* Redirect standard input and standard output */ + FILE *newfp = freopen(STDOUT_FILE, "w", stdout); + if ( newfp == NULL ) { /* This happens on NT */ +#if !defined(stdout) + stdout = fopen(STDOUT_FILE, "w"); +#else + newfp = fopen(STDOUT_FILE, "w"); + if ( newfp ) { + *stdout = *newfp; + } +#endif + } + newfp = freopen(STDERR_FILE, "w", stderr); + if ( newfp == NULL ) { /* This happens on NT */ +#if !defined(stderr) + stderr = fopen(STDERR_FILE, "w"); +#else + newfp = fopen(STDERR_FILE, "w"); + if ( newfp ) { + *stderr = *newfp; + } +#endif + } + setvbuf(stdout, NULL, _IOLBF, BUFSIZ); /* Line buffered */ + setbuf(stderr, NULL); /* No buffering */ + +#endif //defined(WIN32) && defined(USE_CONSOLE) + // Read the config file g_config = new Config(scummhome, "scummvm"); g_config->set("versioninfo", gScummVMVersion); -- cgit v1.2.3