From 0dc6d985eed4b9ec3106f45155ed722b632cc467 Mon Sep 17 00:00:00 2001 From: rude Date: Sat, 7 Nov 2009 00:47:57 +0100 Subject: [PATCH] LOVE arguments now work with Unicode in Windows. --- platform/msvc2008/love.vcproj | 4 +-- src/common/config.h | 4 +++ src/love.cpp | 64 ++++++++++++++++++++++++++++++++--- 3 files changed, 65 insertions(+), 7 deletions(-) diff --git a/platform/msvc2008/love.vcproj b/platform/msvc2008/love.vcproj index 3c6719106..004c662a0 100644 --- a/platform/msvc2008/love.vcproj +++ b/platform/msvc2008/love.vcproj @@ -20,7 +20,7 @@ OutputDirectory="$(SolutionDir)$(ConfigurationName)" IntermediateDirectory="$(ConfigurationName)" ConfigurationType="1" - CharacterSet="2" + CharacterSet="1" > #include +#ifdef LOVE_LEGENDARY_UTF8_ARGV_HACK +#include +#endif // #ifdef LOVE_LEGENDARY_UTF8_ARGV_HACK + #ifdef LOVE_BUILD_EXE // SDL @@ -120,10 +124,56 @@ extern "C" LOVE_EXPORT int luaopen_love(lua_State * L) return 0; } +#ifdef LOVE_LEGENDARY_UTF8_ARGV_HACK + +void get_utf8_arguments(int & argc, char **& argv) +{ + LPWSTR cmd = GetCommandLineW(); + + if(!cmd) + return; + + LPWSTR * argv_w = CommandLineToArgvW(cmd, &argc); + + argv = new char*[argc]; + + for(int i = 0; i 1 && strcmp(argv[1],"--version") == 0) { printf("This is LOVE %s (%s), the unquestionably awesome 2D game engine.\n", love::VERSION_STR, love::VERSION_CODENAME); @@ -166,11 +216,15 @@ int main(int argc, char ** argv) lua_close(L); -#if defined(LOVE_DEBUG) && defined(LOVE_WINDOWS) - printf("(press key)\n"); - getchar(); -#endif - printf("Done. This was: %s (%s)\n", love::VERSION_STR, love::VERSION_CODENAME); +#ifdef LOVE_LEGENDARY_UTF8_ARGV_HACK + if(hack_argv) + { + for(int i = 0; i