From 9b08d8e467077a2235037c305db22aa4ac82d599 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Sun, 2 Apr 2006 02:23:29 +0000 Subject: Moved the Win/Symbian specific stdout/stderr redirect code from base/main.cpp to sdl.cpp, where it belongs (considering that it is backend specific code) svn-id: r21547 --- backends/sdl/sdl.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) (limited to 'backends') diff --git a/backends/sdl/sdl.cpp b/backends/sdl/sdl.cpp index b1da08c60e..fe617991e7 100644 --- a/backends/sdl/sdl.cpp +++ b/backends/sdl/sdl.cpp @@ -32,9 +32,69 @@ #include "scummvm.xpm" +#if defined(WIN32) && defined(NO_CONSOLE) +#include +#define STDOUT_FILE TEXT("stdout.txt") +#define STDERR_FILE TEXT("stderr.txt") +#endif + + +#if !defined(_WIN32_WCE) && !defined(__MAEMO__) -#if !defined(_WIN32_WCE) && !defined(__SYMBIAN32__) && !defined(__MAEMO__) int main(int argc, char *argv[]) { + + +#if (defined(WIN32) && defined(NO_CONSOLE)) || defined(__SYMBIAN32__) + // + // Set up redirects for stdout/stderr under Windows and Symbian. + // Code copied from SDL_main. + // + + // Symbian does not like any output to the console through any *print* function +#if defined(__SYMBIAN32__) + char STDOUT_FILE[256], STDERR_FILE[256]; // shhh, don't tell anybody :) + strcpy(STDOUT_FILE, Symbian::GetExecutablePath()); + strcpy(STDERR_FILE, Symbian::GetExecutablePath()); + strcat(STDOUT_FILE, "scummvm.stdout.txt"); + strcat(STDERR_FILE, "scummvm.stderr.txt"); +#endif + + /* 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 + } +#ifndef __SYMBIAN32__ // fcn not supported on Symbian + setlinebuf(stdout); /* Line buffered */ +#endif + setbuf(stderr, NULL); /* No buffering */ + +#endif // (defined(WIN32) && defined(NO_CONSOLE)) || defined(__SYMBIAN32__) + + + // Invoke the actual ScummVM main entry point: return scummvm_main(argc, argv); } #endif -- cgit v1.2.3