Module: wine Branch: stable Commit: 488f314e918f5f44ee6a9f03bd39e69de5ba0b73 URL: http://source.winehq.org/git/wine.git/?a=commit;h=488f314e918f5f44ee6a9f03bd...
Author: Carlos Rafael Ramirez crramirez@gmail.com Date: Mon Oct 31 18:57:33 2016 -0500
cmd: When 'if' condition is not met, ignore the next commands in the list.
Signed-off-by: Carlos Rafael Ramirez crramirez@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org (cherry picked from commit 55be713d76bef86ba7577c810a9dbdfb071fc179) Signed-off-by: Michael Stefaniuc mstefani@winehq.org
---
programs/cmd/builtins.c | 3 +++ programs/cmd/tests/test_builtins.cmd | 11 +++++++++++ programs/cmd/tests/test_builtins.cmd.exp | 13 +++++++++++++ 3 files changed, 27 insertions(+)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index a444330..cfa1642 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -1574,6 +1574,9 @@ static void WCMD_part_execute(CMD_LIST **cmdList, const WCHAR *firstcmd, } } if (curPosition == *cmdList) *cmdList = (*cmdList)->nextcommand; + } else if (!processThese) { + if (curPosition == *cmdList) *cmdList = (*cmdList)->nextcommand; + WINE_TRACE("Ignore the next command as well (next = %p)\n", *cmdList); } else { WINE_TRACE("Found end of this IF statement (next = %p)\n", *cmdList); break; diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd index cf2559a..975a84b 100644 --- a/programs/cmd/tests/test_builtins.cmd +++ b/programs/cmd/tests/test_builtins.cmd @@ -836,6 +836,17 @@ if 1 GEQ "10" (echo 1 GEQ "10") else echo foo if "1" GEQ "10" (echo 1 GEQ "10") else echo foo if '1' GEQ "10" (echo '1' GEQ "10") else echo foo if "10" GEQ "10" (echo "10" GEQ "10") +echo --- unconditional ampersand after if one line +if "0"=="0" echo 1 & echo 2 & echo 3 else echo 4 +echo --- +echo x & if "0"=="1" echo 1 & echo 2 +echo --- +echo x & if "0"=="1" echo 1 & echo 2 & echo 3 +echo --- +echo x & if "0"=="1" (echo 1 & echo 2 & echo 3) +echo --- +echo x & if "0"=="1" echo 1 & echo 2 & echo 3 else echo 4 +echo --- goto :endIfCompOpsSubroutines
rem IF subroutines helpers diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 7543b53..d70aad3 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -645,6 +645,19 @@ foo foo '1' GEQ "10" "10" GEQ "10" +--- unconditional ampersand after if one line +1@space@ +2@space@ +3 else echo 4 +--- +x@space@ +--- +x@space@ +--- +x@space@ +--- +x@space@ +--- ------------ Testing for ------------ --- plain FOR A