mirror of
https://github.com/ValveSoftware/Proton.git
synced 2025-01-28 06:28:20 +03:00
steam_helper: Parse quote characters consistently with CommandLineToArgvW
This commit is contained in:
parent
3004d37fa4
commit
a63d094dc0
@ -116,6 +116,26 @@ static void setup_steam_registry(void)
|
|||||||
SteamAPI_Shutdown();
|
SteamAPI_Shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static WCHAR *find_quote(WCHAR *str)
|
||||||
|
{
|
||||||
|
WCHAR *end = strchrW(str, '"'), *ch;
|
||||||
|
int odd;
|
||||||
|
while (end)
|
||||||
|
{
|
||||||
|
odd = 0;
|
||||||
|
ch = end - 1;
|
||||||
|
while (ch >= str && *ch == '\\')
|
||||||
|
{
|
||||||
|
odd = !odd;
|
||||||
|
--ch;
|
||||||
|
}
|
||||||
|
if (!odd)
|
||||||
|
return end;
|
||||||
|
end = strchrW(end + 1, '"');
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static HANDLE run_process(void)
|
static HANDLE run_process(void)
|
||||||
{
|
{
|
||||||
WCHAR *cmdline = GetCommandLineW();
|
WCHAR *cmdline = GetCommandLineW();
|
||||||
@ -125,7 +145,7 @@ static HANDLE run_process(void)
|
|||||||
/* skip argv[0] */
|
/* skip argv[0] */
|
||||||
if (*cmdline == '"')
|
if (*cmdline == '"')
|
||||||
{
|
{
|
||||||
cmdline = strchrW(cmdline + 1, '"');
|
cmdline = find_quote(cmdline + 1);
|
||||||
if (cmdline) cmdline++;
|
if (cmdline) cmdline++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -156,7 +176,7 @@ static HANDLE run_process(void)
|
|||||||
if (cmdline[0] == '"')
|
if (cmdline[0] == '"')
|
||||||
{
|
{
|
||||||
start = cmdline + 1;
|
start = cmdline + 1;
|
||||||
end = strchrW(start, '"');
|
end = find_quote(start);
|
||||||
if (!end)
|
if (!end)
|
||||||
{
|
{
|
||||||
WINE_ERR("Unmatched quote? %s\n", wine_dbgstr_w(cmdline));
|
WINE_ERR("Unmatched quote? %s\n", wine_dbgstr_w(cmdline));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user