[CMD] IF: Some functionality is available only when extensions are enabled.

This functionality is: case insensitivity comparisons (/I);
CMDEXTVERSION and DEFINED unary operators; EQU, NEQ, LSS, LEQ, GTR, GEQ
generic string comparators.
This commit is contained in:
Hermès Bélusca-Maïto 2020-07-12 21:41:07 +02:00
parent 80844dc185
commit fedc68aea8
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0
4 changed files with 48 additions and 19 deletions

View file

@ -82,7 +82,7 @@ INT ExecuteIf(PARSED_COMMAND *Cmd)
return 1;
}
if (Cmd->If.Operator == IF_CMDEXTVERSION)
if (bEnableExtensions && (Cmd->If.Operator == IF_CMDEXTVERSION))
{
/* IF CMDEXTVERSION n: check if Command Extensions version
* is greater or equal to n */
@ -93,9 +93,9 @@ INT ExecuteIf(PARSED_COMMAND *Cmd)
cmd_free(Right);
return 1;
}
result = (2 >= n);
result = (CMDEXTVERSION >= n);
}
else if (Cmd->If.Operator == IF_DEFINED)
else if (bEnableExtensions && (Cmd->If.Operator == IF_DEFINED))
{
/* IF DEFINED var: check if environment variable exists */
result = (GetEnvVarOrSpecial(Right) != NULL);
@ -167,7 +167,7 @@ INT ExecuteIf(PARSED_COMMAND *Cmd)
/* IF str1 == str2 */
result = (StringCmp(Left, Right) == 0);
}
else
else if (bEnableExtensions)
{
result = GenericCmp(StringCmp, Left, Right);
switch (Cmd->If.Operator)