Carlos Rafael Ramirez : cmd: When 'if' condition is not met, ignore the next commands in the list.
Alexandre Julliard
julliard at winehq.org
Tue Nov 1 14:58:49 CDT 2016
Module: wine
Branch: master
Commit: 55be713d76bef86ba7577c810a9dbdfb071fc179
URL: http://source.winehq.org/git/wine.git/?a=commit;h=55be713d76bef86ba7577c810a9dbdfb071fc179
Author: Carlos Rafael Ramirez <crramirez at 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 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at 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 at space@
+2 at space@
+3 else echo 4
+---
+x at space@
+---
+x at space@
+---
+x at space@
+---
+x at space@
+---
------------ Testing for ------------
--- plain FOR
A
More information about the wine-cvs
mailing list