[6/6] cmd: Add support for GTR comparison operator in if statements (try 3) (resend)
Frédéric Delanoy
frederic.delanoy at gmail.com
Sat Oct 22 07:52:18 CDT 2011
---
programs/cmd/builtins.c | 9 +++++++++
programs/cmd/tests/test_builtins.cmd | 12 ++++++++++++
programs/cmd/tests/test_builtins.cmd.exp | 16 ++++++++++++++++
3 files changed, 37 insertions(+), 0 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c
index dfeaa4a..3ff8b0b 100644
--- a/programs/cmd/builtins.c
+++ b/programs/cmd/builtins.c
@@ -1507,6 +1507,7 @@ static int evaluate_if_extended_operator(WCHAR *leftOperand, WCHAR *operator, WC
static const WCHAR equW[] = {'e','q','u','\0'};
static const WCHAR neqW[] = {'n','e','q','\0'};
static const WCHAR geqW[] = {'g','e','q','\0'};
+ static const WCHAR gtrW[] = {'g','t','r','\0'};
/* Check if we have plain integers (in decimal, octal or hexadecimal notation) */
leftOperand_int = strtolW(leftOperand, &endptr_leftOp, 0);
@@ -1554,6 +1555,14 @@ static int evaluate_if_extended_operator(WCHAR *leftOperand, WCHAR *operator, WC
: (lstrcmpW (leftOperand, rightOperand) >= 0);
}
+ if (!lstrcmpiW(operator, gtrW)) {
+ if (int_operands)
+ return (leftOperand_int > rightOperand_int);
+ else
+ return caseInsensitive ? (lstrcmpiW(leftOperand, rightOperand) > 0)
+ : (lstrcmpW (leftOperand, rightOperand) > 0);
+ }
+
return -1;
}
diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd
index 04facb6..d5cdb46 100644
--- a/programs/cmd/tests/test_builtins.cmd
+++ b/programs/cmd/tests/test_builtins.cmd
@@ -647,6 +647,11 @@ for %%i in (%STR_PARMS%) do call :GEQtest %%i B
for %%i in (%STR_PARMS%) do call :GEQtest %%i AB
for %%i in (%STR_PARMS%) do call :GEQtest %%i BA
for %%i in (%STR_PARMS%) do call :GEQtest %%i AA
+for %%i in (%STR_PARMS%) do call :GTRtest %%i A
+for %%i in (%STR_PARMS%) do call :GTRtest %%i B
+for %%i in (%STR_PARMS%) do call :GTRtest %%i AB
+for %%i in (%STR_PARMS%) do call :GTRtest %%i BA
+for %%i in (%STR_PARMS%) do call :GTRtest %%i AA
echo ...... for numbers ......
if -1 LSS 1 (echo negative numbers handled)
if not -1 LSS -10 (echo negative numbers handled)
@@ -680,6 +685,10 @@ for %%i in (%INT_PARMS%) do call :GEQtest %%i 0
for %%i in (%INT_PARMS%) do call :GEQtest %%i 1
for %%i in (%INT_PARMS%) do call :GEQtest %%i 10
for %%i in (%INT_PARMS%) do call :GEQtest %%i 9
+for %%i in (%INT_PARMS%) do call :GTRtest %%i 0
+for %%i in (%INT_PARMS%) do call :GTRtest %%i 1
+for %%i in (%INT_PARMS%) do call :GTRtest %%i 10
+for %%i in (%INT_PARMS%) do call :GTRtest %%i 9
goto :endIfCompOpsSubroutines
rem IF subroutines helpers
@@ -698,6 +707,9 @@ goto :eof
:GEQtest
if %1 GEQ %2 echo %1 GEQ %2
goto :eof
+:GTRtest
+if %1 GTR %2 echo %1 GTR %2
+goto :eof
:endIfCompOpsSubroutines
set STR_PARMS=
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp
index 5685d67..2b7eb05 100644
--- a/programs/cmd/tests/test_builtins.cmd.exp
+++ b/programs/cmd/tests/test_builtins.cmd.exp
@@ -484,6 +484,16 @@ B GEQ AA
AB GEQ AA
BA GEQ AA
AA GEQ AA
+B GTR A
+AB GTR A
+BA GTR A
+AA GTR A
+BA GTR B
+B GTR AB
+BA GTR AB
+B GTR AA
+AB GTR AA
+BA GTR AA
...... for numbers ......
negative numbers handled
negative numbers handled
@@ -538,6 +548,12 @@ string/hexa compare ok
10 GEQ 10
10 GEQ 9
9 GEQ 9
+1 GTR 0
+10 GTR 0
+9 GTR 0
+10 GTR 1
+9 GTR 1
+10 GTR 9
-----------Testing for -----------
...plain FOR
A
--
1.7.7
More information about the wine-patches
mailing list