cmd.exe: Fix parsing of && between quotes.

Signed-off-by: Francesco Noferi <lolisamurai@tfwno.gf>
Signed-off-by: Myah Caron <qsniyg@protonmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Francesco Noferi 2020-09-11 09:25:48 +00:00 committed by Alexandre Julliard
parent a26bb7b2ef
commit fc1bb9aff5
3 changed files with 9 additions and 1 deletions

View File

@ -178,6 +178,10 @@ rem cond 5 - string between quotes must be name of executable
cmd /c "say five"
echo @echo 5 >"say five.bat"
cmd /c "say five"
rem cond 6 - && between quotes
cd .&&"cmd.exe" /c "echo hi"
cd "."&&cmd.exe /c "echo hi"
cd "."&&"cmd.exe" /c "echo hi"
echo ------- Testing CMD /C qualifier treatment ------------
rem no need for space after /c

View File

@ -87,6 +87,9 @@ Passed
2@space@
0@space@
5@space@
hi
hi
hi
------- Testing CMD /C qualifier treatment ------------
0@space@
1@space@

View File

@ -1792,7 +1792,8 @@ static BOOL WCMD_IsEndQuote(const WCHAR *quote, int quoteIndex)
/* Quote counting ends at EOL, redirection, space or pipe if current quote is complete */
else if(((quoteCount % 2) == 0)
&& ((quote[i] == '<') || (quote[i] == '>') || (quote[i] == '|') || (quote[i] == ' ')))
&& ((quote[i] == '<') || (quote[i] == '>') || (quote[i] == '|') || (quote[i] == ' ') ||
(quote[i] == '&')))
{
break;
}