Module: wine Branch: master Commit: 80f8d49b07e493a6753518ff5b07ab475fc4b0d2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=80f8d49b07e493a6753518ff5b...
Author: Frédéric Delanoy frederic.delanoy@gmail.com Date: Thu Oct 25 23:48:05 2012 +0200
cmd: Add support for NEQ comparison operator in if statements.
---
programs/cmd/builtins.c | 9 ++++ programs/cmd/tests/test_builtins.cmd.exp | 64 +++++++++++++++--------------- 2 files changed, 41 insertions(+), 32 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index 3a8dfba..e15c7c8 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -2358,6 +2358,7 @@ static int evaluate_if_comparison(const WCHAR *leftOperand, const WCHAR *operato static const WCHAR lssW[] = {'l','s','s','\0'}; static const WCHAR leqW[] = {'l','e','q','\0'}; static const WCHAR equW[] = {'e','q','u','\0'}; + static const WCHAR neqW[] = {'n','e','q','\0'};
/* == is a special case, as it always compares strings */ if (!lstrcmpiW(operator, eqeqW)) @@ -2394,6 +2395,14 @@ static int evaluate_if_comparison(const WCHAR *leftOperand, const WCHAR *operato : lstrcmpW (leftOperand, rightOperand) == 0; }
+ if (!lstrcmpiW(operator, neqW)) { + 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.exp b/programs/cmd/tests/test_builtins.cmd.exp index 009473e..9adc016 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -487,26 +487,26 @@ AB EQU AB BA EQU BA AA EQU AA A EQU a insensitive -@todo_wine@B NEQ A -@todo_wine@AB NEQ A -@todo_wine@BA NEQ A -@todo_wine@AA NEQ A -@todo_wine@A NEQ B -@todo_wine@AB NEQ B -@todo_wine@BA NEQ B -@todo_wine@AA NEQ B -@todo_wine@A NEQ AB -@todo_wine@B NEQ AB -@todo_wine@BA NEQ AB -@todo_wine@AA NEQ AB -@todo_wine@A NEQ BA -@todo_wine@B NEQ BA -@todo_wine@AB NEQ BA -@todo_wine@AA NEQ BA -@todo_wine@A NEQ AA -@todo_wine@B NEQ AA -@todo_wine@AB NEQ AA -@todo_wine@BA NEQ AA +B NEQ A +AB NEQ A +BA NEQ A +AA NEQ A +A NEQ B +AB NEQ B +BA NEQ B +AA NEQ B +A NEQ AB +B NEQ AB +BA NEQ AB +AA NEQ AB +A NEQ BA +B NEQ BA +AB NEQ BA +AA NEQ BA +A NEQ AA +B NEQ AA +AB NEQ AA +BA NEQ AA @todo_wine@A GEQ A @todo_wine@B GEQ A @todo_wine@AB GEQ A @@ -564,18 +564,18 @@ octal ok hexa ok string/hexa compare ok string/hexa compare ok -@todo_wine@1 NEQ 0 -@todo_wine@10 NEQ 0 -@todo_wine@9 NEQ 0 -@todo_wine@0 NEQ 1 -@todo_wine@10 NEQ 1 -@todo_wine@9 NEQ 1 -@todo_wine@0 NEQ 10 -@todo_wine@1 NEQ 10 -@todo_wine@9 NEQ 10 -@todo_wine@0 NEQ 9 -@todo_wine@1 NEQ 9 -@todo_wine@10 NEQ 9 +1 NEQ 0 +10 NEQ 0 +9 NEQ 0 +0 NEQ 1 +10 NEQ 1 +9 NEQ 1 +0 NEQ 10 +1 NEQ 10 +9 NEQ 10 +0 NEQ 9 +1 NEQ 9 +10 NEQ 9 @todo_wine@0 GEQ 0 @todo_wine@1 GEQ 0 @todo_wine@10 GEQ 0