Windows: Support unicode arguments for console applications (thanks, Jorgen!).
authorRyan C. Gordon <icculus@icculus.org>
Thu, 19 Feb 2015 21:44:41 -0500
changeset 9365 2e624f24d1af
parent 9364 ad9d35983de5
child 9366 37c548184616
Windows: Support unicode arguments for console applications (thanks, Jorgen!). Fixes Bugzilla #2864.
src/main/windows/SDL_windows_main.c
--- a/src/main/windows/SDL_windows_main.c	Thu Feb 19 19:55:30 2015 -0500
+++ b/src/main/windows/SDL_windows_main.c	Thu Feb 19 21:44:41 2015 -0500
@@ -109,13 +109,16 @@
 }
 
 #if defined(_MSC_VER)
-/* The VC++ compiler needs main defined */
-#define console_main main
+/* The VC++ compiler needs main/wmain defined */
+# define console_utf8_main main
+# if UNICODE
+#  define console_wmain wmain
+# endif
 #endif
 
-/* This is where execution begins [console apps] */
+/* This is where execution begins [console apps, ansi] */
 int
-console_main(int argc, char *argv[])
+console_utf8_main(int argc, char *argv[])
 {
     SDL_SetMainReady();
 
@@ -123,6 +126,22 @@
     return SDL_main(argc, argv);
 }
 
+#if UNICODE
+/* This is where execution begins [console apps, unicode] */
+int
+console_wmain(int argc, wchar_t *wargv[], wchar_t *wenvp)
+{
+    char **argv = SDL_stack_alloc(char*, argc);
+    int i;
+
+    for (i = 0; i < argc; ++i) {
+        argv[i] = WIN_StringToUTF8(wargv[i]);
+    }
+
+    return console_utf8_main(argc, argv);
+}
+#endif
+
 /* This is where execution begins [windowed apps] */
 int WINAPI
 WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw)
@@ -151,7 +170,7 @@
     ParseCommandLine(cmdline, argv);
 
     /* Run the main program */
-    console_main(argc, argv);
+    console_utf8_main(argc, argv);
 
     SDL_stack_free(argv);