diff options
author | Kostas Nakos | 2007-05-01 13:15:34 +0000 |
---|---|---|
committer | Kostas Nakos | 2007-05-01 13:15:34 +0000 |
commit | 02721c609e9302654a09a8c106249a6403861fa8 (patch) | |
tree | e5187b8f1ec1c15840e0807b80b6e5061221e48f /backends | |
parent | 424b738d5b75b32addbc8ba3467696374c38e985 (diff) | |
download | scummvm-rg350-02721c609e9302654a09a8c106249a6403861fa8.tar.gz scummvm-rg350-02721c609e9302654a09a8c106249a6403861fa8.tar.bz2 scummvm-rg350-02721c609e9302654a09a8c106249a6403861fa8.zip |
generate stdout/err files in cwd and properly delete them in gcc builds
svn-id: r26712
Diffstat (limited to 'backends')
-rw-r--r-- | backends/platform/wince/wince-sdl.cpp | 48 |
1 files changed, 28 insertions, 20 deletions
diff --git a/backends/platform/wince/wince-sdl.cpp b/backends/platform/wince/wince-sdl.cpp index adce2e956a..a826ad7868 100644 --- a/backends/platform/wince/wince-sdl.cpp +++ b/backends/platform/wince/wince-sdl.cpp @@ -85,10 +85,11 @@ using namespace CEGUI; #define NAME_ITEM_ORIENTATION "Orientation" #define NAME_ITEM_BINDKEYS "Bindkeys" -// Given to the true main, needed for backend adaptation - -static FILE *stdout_file; -static FILE *stderr_file; +// stdin/err redirection +#define STDOUT_FNAME "\\scummvm_stdout.txt" +#define STDERR_FNAME "\\scummvm_stderr.txt" +static FILE *stdout_file = NULL, *stderr_file = NULL; +static char stdout_fname[MAX_PATH], stderr_fname[MAX_PATH]; // Static member inits typedef void (*SoundProc)(void *param, byte *buf, int len); @@ -126,8 +127,6 @@ static const OSystem::GraphicsMode s_supportedGraphicsModesHigh[] = { {0, 0, 0} }; -#define STDOUT_FNAME "\\scummvm_stdout.txt" -#define STDERR_FNAME "\\scummvm_stderr.txt" // ******************************************************************************************** @@ -136,6 +135,13 @@ bool isSmartphone() { return _hasSmartphoneResolution; } +const TCHAR *ASCIItoUnicode(const char *str) { + static TCHAR ustr[MAX_PATH]; // size good enough + + MultiByteToWideChar(CP_ACP, 0, str, strlen(str) + 1, ustr, sizeof(ustr) / sizeof(TCHAR)); + return ustr; +} + // MAIN #ifndef __GNUC__ int handleException(EXCEPTION_POINTERS *exceptionPointers) { @@ -155,7 +161,7 @@ OSystem *OSystem_WINCE3_create() { } int SDL_main(int argc, char **argv) { - + FILE *newfp = NULL; #ifdef __GNUC__ // Due to incomplete crt0.o implementation, we go through the constructor function // list provided by the linker and init all of them @@ -172,32 +178,35 @@ int SDL_main(int argc, char **argv) { CEDevice::init(); OSystem_WINCE3::initScreenInfos(); - /* Avoid print problems - this file will be put in RAM anyway */ + /* Redirect standard input and standard output */ + strcpy(stdout_fname, getcwd(NULL, MAX_PATH)); + strcpy(stderr_fname, getcwd(NULL, MAX_PATH)); + strcat(stdout_fname, STDOUT_FNAME); + strcat(stderr_fname, STDERR_FNAME); #ifndef __GNUC__ - stdout_file = fopen(STDOUT_FNAME, "w"); - stderr_file = fopen(STDERR_FNAME, "w"); + stdout_file = fopen(stdout_fname, "w"); + stderr_file = fopen(stderr_fname, "w"); #else - /* Redirect standard input and standard output */ - FILE *newfp = _wfreopen(TEXT(STDOUT_FNAME), TEXT("w"), stdout); + stdout_file = newfp = _wfreopen(ASCIItoUnicode(stdout_fname), TEXT("w"), stdout); if (newfp == NULL) { #if !defined(stdout) - stdout = fopen(STDOUT_FNAME, "w"); + stdout = fopen(stdout_fname, "w"); stdout_file = stdout; #else - newfp = fopen(STDOUT_FNAME, "w"); + newfp = fopen(stdout_fname, "w"); if (newfp) { *stdout = *newfp; stdout_file = stdout; } #endif } - newfp = _wfreopen(TEXT(STDERR_FNAME), TEXT("w"), stderr); + stderr_file = newfp = _wfreopen(ASCIItoUnicode(stderr_fname), TEXT("w"), stderr); if (newfp == NULL) { #if !defined(stderr) - stderr = fopen(STDERR_FNAME, "w"); + stderr = fopen(stderr_fname, "w"); stderr_file = stderr; #else - newfp = fopen(STDERR_FNAME, "w"); + newfp = fopen(stderr_fname, "w"); if (newfp) { *stderr = *newfp; stderr_file = stderr; @@ -216,7 +225,6 @@ int SDL_main(int argc, char **argv) { // Invoke the actual ScummVM main entry point: res = scummvm_main(argc, argv); - //res = scummvm_main(0, NULL); g_system->quit(); // TODO: Consider removing / replacing this! #if !defined(DEBUG) && !defined(__GNUC__) } @@ -2254,8 +2262,8 @@ void OSystem_WINCE3::quit() { fclose(stdout_file); fclose(stderr_file); if (gDebugLevel <= 0) { - DeleteFile(TEXT("\\scummvm_stdout.txt")); - DeleteFile(TEXT("\\scummvm_stderr.txt")); + DeleteFile(ASCIItoUnicode(stdout_fname)); + DeleteFile(ASCIItoUnicode(stderr_fname)); } CEDevice::end(); OSystem_SDL::quit(); |