Use the executable directory, not the current directory, for stdio output files
authorSam Lantinga <slouken@libsdl.org>
Sun, 29 Jan 2006 08:39:35 +0000
changeset 1286 d7bca8c8161e
parent 1285 c9ae23d221ea
child 1287 15a89a0c52bf
Use the executable directory, not the current directory, for stdio output files
src/main/win32/SDL_win32_main.c
--- a/src/main/win32/SDL_win32_main.c	Sun Jan 29 08:19:27 2006 +0000
+++ b/src/main/win32/SDL_win32_main.c	Sun Jan 29 08:39:35 2006 +0000
@@ -266,6 +266,12 @@
 	char **argv;
 	int argc;
 	char *cmdline;
+	DWORD pathlen;
+#ifdef _WIN32_WCE
+	wchar_t path[MAX_PATH];
+#else
+	char path[MAX_PATH];
+#endif
 #ifdef _WIN32_WCE
 	wchar_t *bufp;
 	int nLen;
@@ -286,7 +292,13 @@
 	}
 
 #ifndef NO_STDIO_REDIRECT
-	_getcwd( stdoutPath, sizeof( stdoutPath ) );
+	pathlen = GetModuleFileName(NULL, path, SDL_TABLESIZE(path));
+	while ( pathlen > 0 && path[pathlen] != '\\' ) {
+		--pathlen;
+	}
+	path[pathlen] = '\0';
+
+	strcpy( stdoutPath, path );
 	strcat( stdoutPath, DIR_SEPERATOR STDOUT_FILE );
     
 	/* Redirect standard input and standard output */
@@ -305,7 +317,7 @@
 	}
 #endif /* _WIN32_WCE */
 
-	_getcwd( stderrPath, sizeof( stderrPath ) );
+	strcpy( stderrPath, path );
 	strcat( stderrPath, DIR_SEPERATOR STDERR_FILE );
 
 	newfp = freopen(stderrPath, TEXT("w"), stderr);