Module: wine Branch: master Commit: 55be713d76bef86ba7577c810a9dbdfb071fc179 URL: http://source.winehq.org/git/wine.git/?a=commit;h=55be713d76bef86ba7577c810a...
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
---
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 49c366a..a29a502 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 eac5dca..38a7700 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 67e75e0..d01a23e 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