aboutsummaryrefslogtreecommitdiff
path: root/backends
diff options
context:
space:
mode:
authorMax Horn2006-04-02 02:23:29 +0000
committerMax Horn2006-04-02 02:23:29 +0000
commit9b08d8e467077a2235037c305db22aa4ac82d599 (patch)
treea017b8f0997d105f1ae2944448dac383257f447a /backends
parent70cc7b8c26b0adc449e9a9df8f3c67bd660deee6 (diff)
downloadscummvm-rg350-9b08d8e467077a2235037c305db22aa4ac82d599.tar.gz
scummvm-rg350-9b08d8e467077a2235037c305db22aa4ac82d599.tar.bz2
scummvm-rg350-9b08d8e467077a2235037c305db22aa4ac82d599.zip
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
Diffstat (limited to 'backends')
-rw-r--r--backends/sdl/sdl.cpp62
1 files changed, 61 insertions, 1 deletions
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 <cstdio>
+#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