Windows: Support unicode arguments for console applications (thanks, Jorgen!).

Fixes Bugzilla #2864.
main
Ryan C. Gordon 2015-02-19 21:44:41 -05:00
parent 1b2cb70ca0
commit e93ee5d7b1
1 changed files with 24 additions and 5 deletions

View File

@ -109,13 +109,16 @@ OutOfMemory(void)
}
#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 @@ console_main(int argc, char *argv[])
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 @@ WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw)
ParseCommandLine(cmdline, argv);
/* Run the main program */
console_main(argc, argv);
console_utf8_main(argc, argv);
SDL_stack_free(argv);