Carlos Rafael Ramirez : cmd: When 'if' condition is not met, ignore the next commands in the list.

Alexandre Julliard julliard at winehq.org
Mon Dec 19 13:10:38 CST 2016


Module: wine
Branch: stable
Commit: 488f314e918f5f44ee6a9f03bd39e69de5ba0b73
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=488f314e918f5f44ee6a9f03bd39e69de5ba0b73

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>
(cherry picked from commit 55be713d76bef86ba7577c810a9dbdfb071fc179)
Signed-off-by: Michael Stefaniuc <mstefani 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 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 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