# HG changeset patch # User alfadur # Date 1652129931 -10800 # Node ID ad43384fbbe9fb66313bc3a549995c27cc8245b8 # Parent 4e3c340eb76629f612dc40e3d430fbefa774d605 pass unicode paths as base64 on windows diff -r 4e3c340eb766 -r ad43384fbbe9 QTfrontend/game.cpp --- a/QTfrontend/game.cpp Mon May 09 20:11:38 2022 +0300 +++ b/QTfrontend/game.cpp Mon May 09 23:58:51 2022 +0300 @@ -600,10 +600,31 @@ arguments << "--internal"; //Must be passed as first argument arguments << "--port"; arguments << QString("%1").arg(ipc_port); +#ifdef _WIN32 + { + QString path = datadir->absolutePath(); + if (path == QLatin1String(path.toLatin1())) { + arguments << "--prefix"; + arguments << path; + } else { + arguments << "--prefix64"; + arguments << path.toUtf8().toBase64(); + } + path = cfgdir->absolutePath(); + if (path == QLatin1String(path.toLatin1())) { + arguments << "--user-prefix"; + arguments << path; + } else { + arguments << "--user-prefix64"; + arguments << path.toUtf8().toBase64(); + } + } +#else arguments << "--prefix"; arguments << datadir->absolutePath(); arguments << "--user-prefix"; - arguments << cfgdir->absolutePath(); + arguments << cfgdir->absolutePath(); +#endif arguments << "--locale"; // TODO: Don't bother translators with this nonsense and detect this file automatically. //: IMPORTANT: This text has a special meaning, do not translate it directly. This is the file name of translation files for the game engine, found in Data/Locale/. Usually, you replace “en” with the ISO-639-1 language code of your language. diff -r 4e3c340eb766 -r ad43384fbbe9 hedgewars/ArgParsers.pas --- a/hedgewars/ArgParsers.pas Mon May 09 20:11:38 2022 +0300 +++ b/hedgewars/ArgParsers.pas Mon May 09 23:58:51 2022 +0300 @@ -244,13 +244,13 @@ end; function parseParameter(cmd:string; arg:string; var paramIndex:LongInt): Boolean; -const reallyAll: array[0..35] of shortstring = ( +const reallyAll: array[0..37] of shortstring = ( '--prefix', '--user-prefix', '--locale', '--fullscreen-width', '--fullscreen-height', '--width', '--height', '--maximized', '--frame-interval', '--volume','--nomusic', '--nosound', '--nodampen', '--fullscreen', '--showfps', '--altdmg', '--low-quality', '--raw-quality', '--stereo', '--nick', '--zoom', {internal} '--internal', '--port', '--recorder', '--landpreview', - {misc} '--stats-only', '--gci', '--help','--protocol', '--no-teamtag','--no-hogtag','--no-healthtag','--translucent-tags','--lua-test','--no-holiday-silliness','--chat-size'); + {misc} '--stats-only', '--gci', '--help','--protocol', '--no-teamtag','--no-hogtag','--no-healthtag','--translucent-tags','--lua-test','--no-holiday-silliness','--chat-size', '--prefix64', '--user-prefix64'); var cmdIndex: byte; begin parseParameter:= false; @@ -299,6 +299,8 @@ {--lua-test} 33 : begin cTestLua := true; SetSound(false); cScriptName := getstringParameter(arg, paramIndex, parseParameter); WriteLn(stdout, 'Lua test file specified: ' + cScriptName);end; {--no-holiday-silliness} 34 : cHolidaySilliness:= false; {--chat-size} 35 : cDefaultChatScale := 1.0 * getLongIntParameter(arg, paramIndex, parseParameter) / 100; + {--prefix64} 36: PathPrefix := DecodeBase64(getstringParameter(arg, paramIndex, parseParameter)); + {--user-prefix64} 37: UserPathPrefix := DecodeBase64(getstringParameter(arg, paramIndex, parseParameter)); else begin //Assume the first "non parameter" is the demo file, anything else is invalid