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