diff options
author | Travis Howell | 2003-09-26 00:09:09 +0000 |
---|---|---|
committer | Travis Howell | 2003-09-26 00:09:09 +0000 |
commit | 68c060405ce04ba34cb0252498e54ab77d57cc4b (patch) | |
tree | b1515041e00c7dc2c9e2a92fa4db9ab17c605d4d /base | |
parent | a30eb131bb746efc3134e34db8870c5889deeb1a (diff) | |
download | scummvm-rg350-68c060405ce04ba34cb0252498e54ab77d57cc4b.tar.gz scummvm-rg350-68c060405ce04ba34cb0252498e54ab77d57cc4b.tar.bz2 scummvm-rg350-68c060405ce04ba34cb0252498e54ab77d57cc4b.zip |
Add optional define for no console
svn-id: r10410
Diffstat (limited to 'base')
-rw-r--r-- | base/main.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
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 <cstdio> +#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); |