/** @file\r
Main file for If and else shell level 1 function.\r
\r
- Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>\r
- This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>\r
+ Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#include "UefiShellLevel1CommandsLib.h"\r
#include <Library/PrintLib.h>\r
-#include <Library/PathLib.h>\r
\r
typedef enum {\r
EndTagOr,\r
\r
@param[in, out] Statement The current remaining statement.\r
@param[in] Fragment The current fragment.\r
+ @param[out] Match TRUE when there is another Fragment in Statement,\r
+ FALSE otherwise.\r
\r
- @retval FALSE There is not another fragment.\r
- @retval TRUE There is another fragment.\r
+ @retval EFI_SUCCESS The match operation is performed successfully.\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
**/\r
-BOOLEAN\r
-EFIAPI\r
+EFI_STATUS\r
IsNextFragment (\r
- IN OUT CONST CHAR16 **Statement,\r
- IN CONST CHAR16 *Fragment\r
+ IN OUT CONST CHAR16 **Statement,\r
+ IN CONST CHAR16 *Fragment,\r
+ OUT BOOLEAN *Match\r
)\r
{\r
- CHAR16 *Tester;\r
+ CHAR16 *Tester;\r
\r
Tester = NULL;\r
\r
- Tester = StrnCatGrow(&Tester, NULL, *Statement, StrLen(Fragment));\r
- ASSERT(Tester != NULL);\r
- Tester[StrLen(Fragment)] = CHAR_NULL;\r
- if (gUnicodeCollation->StriColl(\r
- gUnicodeCollation,\r
- (CHAR16*)Fragment,\r
- Tester) == 0) {\r
+ Tester = StrnCatGrow (&Tester, NULL, *Statement, StrLen (Fragment));\r
+ if (Tester == NULL) {\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
+\r
+ Tester[StrLen (Fragment)] = CHAR_NULL;\r
+ if (gUnicodeCollation->StriColl (\r
+ gUnicodeCollation,\r
+ (CHAR16 *)Fragment,\r
+ Tester\r
+ ) == 0)\r
+ {\r
//\r
// increment the string pointer to the end of what we found and then chop off spaces...\r
//\r
- *Statement+=StrLen(Fragment);\r
+ *Statement += StrLen (Fragment);\r
while (*Statement[0] == L' ') {\r
(*Statement)++;\r
}\r
- FreePool(Tester);\r
- return (TRUE);\r
+\r
+ *Match = TRUE;\r
+ } else {\r
+ *Match = FALSE;\r
}\r
- FreePool(Tester);\r
- return (FALSE);\r
+\r
+ FreePool (Tester);\r
+ return EFI_SUCCESS;\r
}\r
\r
/**\r
@retval FALSE String is not a valid profile.\r
**/\r
BOOLEAN\r
-EFIAPI\r
IsValidProfile (\r
- IN CONST CHAR16 *String\r
+ IN CONST CHAR16 *String\r
)\r
{\r
CONST CHAR16 *ProfilesString;\r
CONST CHAR16 *TempLocation;\r
\r
- ProfilesString = ShellGetEnvironmentVariable(L"profiles");\r
- ASSERT(ProfilesString != NULL);\r
- TempLocation = StrStr(ProfilesString, String);\r
- if ((TempLocation != NULL) && (*(TempLocation-1) == L';') && (*(TempLocation+StrLen(String)) == L';')) {\r
+ ProfilesString = ShellGetEnvironmentVariable (L"profiles");\r
+ ASSERT (ProfilesString != NULL);\r
+ TempLocation = StrStr (ProfilesString, String);\r
+ if ((TempLocation != NULL) && (*(TempLocation-1) == L';') && (*(TempLocation+StrLen (String)) == L';')) {\r
return (TRUE);\r
}\r
+\r
return (FALSE);\r
}\r
\r
@return The result of the comparison.\r
**/\r
BOOLEAN\r
-EFIAPI\r
TestOperation (\r
IN CONST CHAR16 *Compare1,\r
IN CONST CHAR16 *Compare2,\r
IN CONST BOOLEAN ForceStringCompare\r
)\r
{\r
- INTN Cmp1;\r
- INTN Cmp2;\r
+ INTN Cmp1;\r
+ INTN Cmp2;\r
\r
//\r
// "Compare1 BinOp Compare2"\r
//\r
switch (BinOp) {\r
- case OperatorUnisgnedGreaterThan:\r
- case OperatorGreaterThan:\r
- if (ForceStringCompare || !ShellIsHexOrDecimalNumber(Compare1, FALSE, FALSE) || !ShellIsHexOrDecimalNumber(Compare2, FALSE, FALSE)) {\r
- //\r
- // string compare\r
- //\r
- if ((CaseInsensitive && StringNoCaseCompare(&Compare1, &Compare2) > 0) || (StringCompare(&Compare1, &Compare2) > 0)) {\r
- return (TRUE);\r
- }\r
- } else {\r
- //\r
- // numeric compare\r
- //\r
- if (Compare1[0] == L'-') {\r
- Cmp1 = 0 - (INTN)ShellStrToUintn(Compare1+1);\r
- } else {\r
- Cmp1 = (INTN)ShellStrToUintn(Compare1);\r
- }\r
- if (Compare2[0] == L'-') {\r
- Cmp2 = 0 - (INTN)ShellStrToUintn(Compare2+1);\r
- } else {\r
- Cmp2 = (INTN)ShellStrToUintn(Compare2);\r
- }\r
- if (BinOp == OperatorGreaterThan) {\r
- if (Cmp1 > Cmp2) {\r
+ case OperatorUnisgnedGreaterThan:\r
+ case OperatorGreaterThan:\r
+ if (ForceStringCompare || !ShellIsHexOrDecimalNumber (Compare1, FALSE, FALSE) || !ShellIsHexOrDecimalNumber (Compare2, FALSE, FALSE)) {\r
+ //\r
+ // string compare\r
+ //\r
+ if ((CaseInsensitive && (StringNoCaseCompare (&Compare1, &Compare2) > 0)) || (StringCompare (&Compare1, &Compare2) > 0)) {\r
return (TRUE);\r
}\r
} else {\r
- if ((UINTN)Cmp1 > (UINTN)Cmp2) {\r
- return (TRUE);\r
+ //\r
+ // numeric compare\r
+ //\r
+ if (Compare1[0] == L'-') {\r
+ Cmp1 = 0 - (INTN)ShellStrToUintn (Compare1+1);\r
+ } else {\r
+ Cmp1 = (INTN)ShellStrToUintn (Compare1);\r
+ }\r
+\r
+ if (Compare2[0] == L'-') {\r
+ Cmp2 = 0 - (INTN)ShellStrToUintn (Compare2+1);\r
+ } else {\r
+ Cmp2 = (INTN)ShellStrToUintn (Compare2);\r
+ }\r
+\r
+ if (BinOp == OperatorGreaterThan) {\r
+ if (Cmp1 > Cmp2) {\r
+ return (TRUE);\r
+ }\r
+ } else {\r
+ if ((UINTN)Cmp1 > (UINTN)Cmp2) {\r
+ return (TRUE);\r
+ }\r
}\r
}\r
- }\r
- return (FALSE);\r
- case OperatorUnsignedLessThan:\r
- case OperatorLessThan:\r
- if (ForceStringCompare || !ShellIsHexOrDecimalNumber(Compare1, FALSE, FALSE) || !ShellIsHexOrDecimalNumber(Compare2, FALSE, FALSE)) {\r
- //\r
- // string compare\r
- //\r
- if ((CaseInsensitive && StringNoCaseCompare(&Compare1, &Compare2) < 0) || (StringCompare(&Compare1, &Compare2) < 0)) {\r
- return (TRUE);\r
- }\r
- } else {\r
- //\r
- // numeric compare\r
- //\r
- if (Compare1[0] == L'-') {\r
- Cmp1 = 0 - (INTN)ShellStrToUintn(Compare1+1);\r
- } else {\r
- Cmp1 = (INTN)ShellStrToUintn(Compare1);\r
- }\r
- if (Compare2[0] == L'-') {\r
- Cmp2 = 0 - (INTN)ShellStrToUintn(Compare2+1);\r
+\r
+ return (FALSE);\r
+ case OperatorUnsignedLessThan:\r
+ case OperatorLessThan:\r
+ if (ForceStringCompare || !ShellIsHexOrDecimalNumber (Compare1, FALSE, FALSE) || !ShellIsHexOrDecimalNumber (Compare2, FALSE, FALSE)) {\r
+ //\r
+ // string compare\r
+ //\r
+ if ((CaseInsensitive && (StringNoCaseCompare (&Compare1, &Compare2) < 0)) || (StringCompare (&Compare1, &Compare2) < 0)) {\r
+ return (TRUE);\r
+ }\r
} else {\r
- Cmp2 = (INTN)ShellStrToUintn(Compare2);\r
+ //\r
+ // numeric compare\r
+ //\r
+ if (Compare1[0] == L'-') {\r
+ Cmp1 = 0 - (INTN)ShellStrToUintn (Compare1+1);\r
+ } else {\r
+ Cmp1 = (INTN)ShellStrToUintn (Compare1);\r
+ }\r
+\r
+ if (Compare2[0] == L'-') {\r
+ Cmp2 = 0 - (INTN)ShellStrToUintn (Compare2+1);\r
+ } else {\r
+ Cmp2 = (INTN)ShellStrToUintn (Compare2);\r
+ }\r
+\r
+ if (BinOp == OperatorLessThan) {\r
+ if (Cmp1 < Cmp2) {\r
+ return (TRUE);\r
+ }\r
+ } else {\r
+ if ((UINTN)Cmp1 < (UINTN)Cmp2) {\r
+ return (TRUE);\r
+ }\r
+ }\r
}\r
- if (BinOp == OperatorLessThan) {\r
- if (Cmp1 < Cmp2) {\r
+\r
+ return (FALSE);\r
+ case OperatorEqual:\r
+ if (ForceStringCompare || !ShellIsHexOrDecimalNumber (Compare1, FALSE, FALSE) || !ShellIsHexOrDecimalNumber (Compare2, FALSE, FALSE)) {\r
+ //\r
+ // string compare\r
+ //\r
+ if ((CaseInsensitive && (StringNoCaseCompare (&Compare1, &Compare2) == 0)) || (StringCompare (&Compare1, &Compare2) == 0)) {\r
return (TRUE);\r
}\r
} else {\r
- if ((UINTN)Cmp1 < (UINTN)Cmp2) {\r
+ //\r
+ // numeric compare\r
+ //\r
+ if (Compare1[0] == L'-') {\r
+ Cmp1 = 0 - (INTN)ShellStrToUintn (Compare1+1);\r
+ } else {\r
+ Cmp1 = (INTN)ShellStrToUintn (Compare1);\r
+ }\r
+\r
+ if (Compare2[0] == L'-') {\r
+ Cmp2 = 0 - (INTN)ShellStrToUintn (Compare2+1);\r
+ } else {\r
+ Cmp2 = (INTN)ShellStrToUintn (Compare2);\r
+ }\r
+\r
+ if (Cmp1 == Cmp2) {\r
return (TRUE);\r
}\r
}\r
\r
- }\r
- return (FALSE);\r
- case OperatorEqual:\r
- if (ForceStringCompare || !ShellIsHexOrDecimalNumber(Compare1, FALSE, FALSE) || !ShellIsHexOrDecimalNumber(Compare2, FALSE, FALSE)) {\r
- //\r
- // string compare\r
- //\r
- if ((CaseInsensitive && StringNoCaseCompare(&Compare1, &Compare2) == 0) || (StringCompare(&Compare1, &Compare2) == 0)) {\r
- return (TRUE);\r
- }\r
- } else {\r
- //\r
- // numeric compare\r
- //\r
- if (Compare1[0] == L'-') {\r
- Cmp1 = 0 - (INTN)ShellStrToUintn(Compare1+1);\r
- } else {\r
- Cmp1 = (INTN)ShellStrToUintn(Compare1);\r
- }\r
- if (Compare2[0] == L'-') {\r
- Cmp2 = 0 - (INTN)ShellStrToUintn(Compare2+1);\r
- } else {\r
- Cmp2 = (INTN)ShellStrToUintn(Compare2);\r
- }\r
- if (Cmp1 == Cmp2) {\r
- return (TRUE);\r
- }\r
- }\r
- return (FALSE);\r
- case OperatorNotEqual:\r
- if (ForceStringCompare || !ShellIsHexOrDecimalNumber(Compare1, FALSE, FALSE) || !ShellIsHexOrDecimalNumber(Compare2, FALSE, FALSE)) {\r
- //\r
- // string compare\r
- //\r
- if ((CaseInsensitive && StringNoCaseCompare(&Compare1, &Compare2) != 0) || (StringCompare(&Compare1, &Compare2) != 0)) {\r
- return (TRUE);\r
- }\r
- } else {\r
- //\r
- // numeric compare\r
- //\r
- if (Compare1[0] == L'-') {\r
- Cmp1 = 0 - (INTN)ShellStrToUintn(Compare1+1);\r
- } else {\r
- Cmp1 = (INTN)ShellStrToUintn(Compare1);\r
- }\r
- if (Compare2[0] == L'-') {\r
- Cmp2 = 0 - (INTN)ShellStrToUintn(Compare2+1);\r
- } else {\r
- Cmp2 = (INTN)ShellStrToUintn(Compare2);\r
- }\r
- if (Cmp1 != Cmp2) {\r
- return (TRUE);\r
- }\r
- }\r
- return (FALSE);\r
- case OperatorUnsignedGreaterOrEqual:\r
- case OperatorGreatorOrEqual:\r
- if (ForceStringCompare || !ShellIsHexOrDecimalNumber(Compare1, FALSE, FALSE) || !ShellIsHexOrDecimalNumber(Compare2, FALSE, FALSE)) {\r
- //\r
- // string compare\r
- //\r
- if ((CaseInsensitive && StringNoCaseCompare(&Compare1, &Compare2) >= 0) || (StringCompare(&Compare1, &Compare2) >= 0)) {\r
- return (TRUE);\r
- }\r
- } else {\r
- //\r
- // numeric compare\r
- //\r
- if (Compare1[0] == L'-') {\r
- Cmp1 = 0 - (INTN)ShellStrToUintn(Compare1+1);\r
- } else {\r
- Cmp1 = (INTN)ShellStrToUintn(Compare1);\r
- }\r
- if (Compare2[0] == L'-') {\r
- Cmp2 = 0 - (INTN)ShellStrToUintn(Compare2+1);\r
- } else {\r
- Cmp2 = (INTN)ShellStrToUintn(Compare2);\r
- }\r
- if (BinOp == OperatorGreatorOrEqual) {\r
- if (Cmp1 >= Cmp2) {\r
+ return (FALSE);\r
+ case OperatorNotEqual:\r
+ if (ForceStringCompare || !ShellIsHexOrDecimalNumber (Compare1, FALSE, FALSE) || !ShellIsHexOrDecimalNumber (Compare2, FALSE, FALSE)) {\r
+ //\r
+ // string compare\r
+ //\r
+ if ((CaseInsensitive && (StringNoCaseCompare (&Compare1, &Compare2) != 0)) || (StringCompare (&Compare1, &Compare2) != 0)) {\r
return (TRUE);\r
}\r
} else {\r
- if ((UINTN)Cmp1 >= (UINTN)Cmp2) {\r
+ //\r
+ // numeric compare\r
+ //\r
+ if (Compare1[0] == L'-') {\r
+ Cmp1 = 0 - (INTN)ShellStrToUintn (Compare1+1);\r
+ } else {\r
+ Cmp1 = (INTN)ShellStrToUintn (Compare1);\r
+ }\r
+\r
+ if (Compare2[0] == L'-') {\r
+ Cmp2 = 0 - (INTN)ShellStrToUintn (Compare2+1);\r
+ } else {\r
+ Cmp2 = (INTN)ShellStrToUintn (Compare2);\r
+ }\r
+\r
+ if (Cmp1 != Cmp2) {\r
return (TRUE);\r
}\r
}\r
- }\r
- return (FALSE);\r
- case OperatorLessOrEqual:\r
- case OperatorUnsignedLessOrEqual:\r
- if (ForceStringCompare || !ShellIsHexOrDecimalNumber(Compare1, FALSE, FALSE) || !ShellIsHexOrDecimalNumber(Compare2, FALSE, FALSE)) {\r
- //\r
- // string compare\r
- //\r
- if ((CaseInsensitive && StringNoCaseCompare(&Compare1, &Compare2) <= 0) || (StringCompare(&Compare1, &Compare2) <= 0)) {\r
- return (TRUE);\r
- }\r
- } else {\r
- //\r
- // numeric compare\r
- //\r
- if (Compare1[0] == L'-') {\r
- Cmp1 = 0 - (INTN)ShellStrToUintn(Compare1+1);\r
- } else {\r
- Cmp1 = (INTN)ShellStrToUintn(Compare1);\r
- }\r
- if (Compare2[0] == L'-') {\r
- Cmp2 = 0 - (INTN)ShellStrToUintn(Compare2+1);\r
+\r
+ return (FALSE);\r
+ case OperatorUnsignedGreaterOrEqual:\r
+ case OperatorGreatorOrEqual:\r
+ if (ForceStringCompare || !ShellIsHexOrDecimalNumber (Compare1, FALSE, FALSE) || !ShellIsHexOrDecimalNumber (Compare2, FALSE, FALSE)) {\r
+ //\r
+ // string compare\r
+ //\r
+ if ((CaseInsensitive && (StringNoCaseCompare (&Compare1, &Compare2) >= 0)) || (StringCompare (&Compare1, &Compare2) >= 0)) {\r
+ return (TRUE);\r
+ }\r
} else {\r
- Cmp2 = (INTN)ShellStrToUintn(Compare2);\r
+ //\r
+ // numeric compare\r
+ //\r
+ if (Compare1[0] == L'-') {\r
+ Cmp1 = 0 - (INTN)ShellStrToUintn (Compare1+1);\r
+ } else {\r
+ Cmp1 = (INTN)ShellStrToUintn (Compare1);\r
+ }\r
+\r
+ if (Compare2[0] == L'-') {\r
+ Cmp2 = 0 - (INTN)ShellStrToUintn (Compare2+1);\r
+ } else {\r
+ Cmp2 = (INTN)ShellStrToUintn (Compare2);\r
+ }\r
+\r
+ if (BinOp == OperatorGreatorOrEqual) {\r
+ if (Cmp1 >= Cmp2) {\r
+ return (TRUE);\r
+ }\r
+ } else {\r
+ if ((UINTN)Cmp1 >= (UINTN)Cmp2) {\r
+ return (TRUE);\r
+ }\r
+ }\r
}\r
- if (BinOp == OperatorLessOrEqual) {\r
- if (Cmp1 <= Cmp2) {\r
+\r
+ return (FALSE);\r
+ case OperatorLessOrEqual:\r
+ case OperatorUnsignedLessOrEqual:\r
+ if (ForceStringCompare || !ShellIsHexOrDecimalNumber (Compare1, FALSE, FALSE) || !ShellIsHexOrDecimalNumber (Compare2, FALSE, FALSE)) {\r
+ //\r
+ // string compare\r
+ //\r
+ if ((CaseInsensitive && (StringNoCaseCompare (&Compare1, &Compare2) <= 0)) || (StringCompare (&Compare1, &Compare2) <= 0)) {\r
return (TRUE);\r
}\r
} else {\r
- if ((UINTN)Cmp1 <= (UINTN)Cmp2) {\r
- return (TRUE);\r
+ //\r
+ // numeric compare\r
+ //\r
+ if (Compare1[0] == L'-') {\r
+ Cmp1 = 0 - (INTN)ShellStrToUintn (Compare1+1);\r
+ } else {\r
+ Cmp1 = (INTN)ShellStrToUintn (Compare1);\r
+ }\r
+\r
+ if (Compare2[0] == L'-') {\r
+ Cmp2 = 0 - (INTN)ShellStrToUintn (Compare2+1);\r
+ } else {\r
+ Cmp2 = (INTN)ShellStrToUintn (Compare2);\r
+ }\r
+\r
+ if (BinOp == OperatorLessOrEqual) {\r
+ if (Cmp1 <= Cmp2) {\r
+ return (TRUE);\r
+ }\r
+ } else {\r
+ if ((UINTN)Cmp1 <= (UINTN)Cmp2) {\r
+ return (TRUE);\r
+ }\r
}\r
}\r
- }\r
- return (FALSE);\r
- default:\r
- ASSERT(FALSE);\r
- return (FALSE);\r
+\r
+ return (FALSE);\r
+ default:\r
+ ASSERT (FALSE);\r
+ return (FALSE);\r
}\r
}\r
\r
/**\r
Process an if statement and determine if its is valid or not.\r
\r
- @param[in, out] PassingState Opon entry, the current state. Upon exit, \r
+ @param[in, out] PassingState Opon entry, the current state. Upon exit,\r
the new state.\r
@param[in] StartParameterNumber The number of the first parameter of\r
this statement.\r
@param[in] ForceStringCompare TRUE for all string based, FALSE otherwise.\r
\r
@retval EFI_INVALID_PARAMETER A parameter was invalid.\r
- @retval EFI_SUCCESS The operation was successful. \r
+ @retval EFI_SUCCESS The operation was successful.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
ProcessStatement (\r
- IN OUT BOOLEAN *PassingState,\r
- IN UINTN StartParameterNumber,\r
- IN UINTN EndParameterNumber,\r
- IN CONST END_TAG_TYPE OperatorToUse,\r
- IN CONST BOOLEAN CaseInsensitive,\r
- IN CONST BOOLEAN ForceStringCompare\r
+ IN OUT BOOLEAN *PassingState,\r
+ IN UINTN StartParameterNumber,\r
+ IN UINTN EndParameterNumber,\r
+ IN CONST END_TAG_TYPE OperatorToUse,\r
+ IN CONST BOOLEAN CaseInsensitive,\r
+ IN CONST BOOLEAN ForceStringCompare\r
)\r
{\r
- EFI_STATUS Status;\r
- BOOLEAN OperationResult;\r
- BOOLEAN NotPresent;\r
- CHAR16 *StatementWalker;\r
- BIN_OPERATOR_TYPE BinOp;\r
- CHAR16 *Compare1;\r
- CHAR16 *Compare2;\r
- CHAR16 HexString[20];\r
- CHAR16 *TempSpot;\r
-\r
- ASSERT((END_TAG_TYPE)OperatorToUse != EndTagThen);\r
+ EFI_STATUS Status;\r
+ BOOLEAN OperationResult;\r
+ BOOLEAN NotPresent;\r
+ CHAR16 *StatementWalker;\r
+ BIN_OPERATOR_TYPE BinOp;\r
+ CHAR16 *Compare1;\r
+ CHAR16 *Compare2;\r
+ CHAR16 HexString[20];\r
+ CHAR16 *TempSpot;\r
+ BOOLEAN Match;\r
+\r
+ ASSERT ((END_TAG_TYPE)OperatorToUse != EndTagThen);\r
\r
Status = EFI_SUCCESS;\r
BinOp = OperatorMax;\r
OperationResult = FALSE;\r
+ Match = FALSE;\r
StatementWalker = gEfiShellParametersProtocol->Argv[StartParameterNumber];\r
- if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"not")) {\r
+ if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"not", &Match)) && Match) {\r
NotPresent = TRUE;\r
StatementWalker = gEfiShellParametersProtocol->Argv[++StartParameterNumber];\r
} else {\r
//\r
// now check for 'boolfunc' operators\r
//\r
- if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"isint")) {\r
- if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"(") && StatementWalker[StrLen(StatementWalker)-1] == L')') {\r
- StatementWalker[StrLen(StatementWalker)-1] = CHAR_NULL;\r
- OperationResult = ShellIsHexOrDecimalNumber(StatementWalker, FALSE, FALSE);\r
+ if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"isint", &Match)) && Match) {\r
+ if ( !EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"(", &Match)) && Match\r
+ && (StatementWalker[StrLen (StatementWalker)-1] == L')'))\r
+ {\r
+ StatementWalker[StrLen (StatementWalker)-1] = CHAR_NULL;\r
+ OperationResult = ShellIsHexOrDecimalNumber (StatementWalker, FALSE, FALSE);\r
} else {\r
Status = EFI_INVALID_PARAMETER;\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"isint");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"isint");\r
}\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"exists") || IsNextFragment((CONST CHAR16**)(&StatementWalker), L"exist")) {\r
- if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"(") && StatementWalker[StrLen(StatementWalker)-1] == L')') {\r
- StatementWalker[StrLen(StatementWalker)-1] = CHAR_NULL;\r
+ } else if ((!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"exists", &Match)) && Match) ||\r
+ (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"exist", &Match)) && Match))\r
+ {\r
+ if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"(", &Match)) && Match &&\r
+ (StatementWalker[StrLen (StatementWalker)-1] == L')'))\r
+ {\r
+ StatementWalker[StrLen (StatementWalker)-1] = CHAR_NULL;\r
//\r
// is what remains a file in CWD???\r
//\r
- OperationResult = (BOOLEAN)(ShellFileExists(StatementWalker)==EFI_SUCCESS);\r
- } else if (StatementWalker[0] == CHAR_NULL && StartParameterNumber+1 == EndParameterNumber) {\r
- OperationResult = (BOOLEAN)(ShellFileExists(gEfiShellParametersProtocol->Argv[++StartParameterNumber])==EFI_SUCCESS);\r
+ OperationResult = (BOOLEAN)(ShellFileExists (StatementWalker) == EFI_SUCCESS);\r
+ } else if ((StatementWalker[0] == CHAR_NULL) && (StartParameterNumber+1 == EndParameterNumber)) {\r
+ OperationResult = (BOOLEAN)(ShellFileExists (gEfiShellParametersProtocol->Argv[++StartParameterNumber]) == EFI_SUCCESS);\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"exist(s)");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"exist(s)");\r
Status = EFI_INVALID_PARAMETER;\r
}\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"available")) {\r
- if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"(") && StatementWalker[StrLen(StatementWalker)-1] == L')') {\r
- StatementWalker[StrLen(StatementWalker)-1] = CHAR_NULL;\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"available", &Match)) && Match) {\r
+ if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"(", &Match)) && Match &&\r
+ (StatementWalker[StrLen (StatementWalker)-1] == L')'))\r
+ {\r
+ StatementWalker[StrLen (StatementWalker)-1] = CHAR_NULL;\r
//\r
// is what remains a file in the CWD or path???\r
//\r
- OperationResult = (BOOLEAN)(ShellIsFileInPath(StatementWalker)==EFI_SUCCESS);\r
+ OperationResult = (BOOLEAN)(ShellIsFileInPath (StatementWalker) == EFI_SUCCESS);\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"available");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"available");\r
Status = EFI_INVALID_PARAMETER;\r
}\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"profile")) {\r
- if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"(") && StatementWalker[StrLen(StatementWalker)-1] == L')') {\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"profile", &Match)) && Match) {\r
+ if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"(", &Match)) && Match &&\r
+ (StatementWalker[StrLen (StatementWalker)-1] == L')'))\r
+ {\r
//\r
// Chop off that ')'\r
//\r
- StatementWalker[StrLen(StatementWalker)-1] = CHAR_NULL;\r
- OperationResult = IsValidProfile(StatementWalker);\r
+ StatementWalker[StrLen (StatementWalker)-1] = CHAR_NULL;\r
+ OperationResult = IsValidProfile (StatementWalker);\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"profile");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"profile");\r
Status = EFI_INVALID_PARAMETER;\r
}\r
} else if (StartParameterNumber+1 >= EndParameterNumber) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, gEfiShellParametersProtocol->Argv[StartParameterNumber]);\r
- Status = EFI_INVALID_PARAMETER;\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, gEfiShellParametersProtocol->Argv[StartParameterNumber]);\r
+ Status = EFI_INVALID_PARAMETER;\r
} else {\r
//\r
// must be 'item binop item' style\r
// get the first item\r
//\r
StatementWalker = gEfiShellParametersProtocol->Argv[StartParameterNumber];\r
- if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"efierror")) {\r
- TempSpot = StrStr(StatementWalker, L")");\r
- if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"(") && TempSpot != NULL) {\r
+ if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"efierror", &Match)) && Match) {\r
+ TempSpot = StrStr (StatementWalker, L")");\r
+ if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"(", &Match)) && Match && (TempSpot != NULL)) {\r
*TempSpot = CHAR_NULL;\r
- if (ShellIsHexOrDecimalNumber(StatementWalker, FALSE, FALSE)) {\r
- UnicodeSPrint(HexString, sizeof(HexString), L"0x%x", ShellStrToUintn(StatementWalker)|MAX_BIT);\r
- ASSERT(Compare1 == NULL);\r
- Compare1 = StrnCatGrow(&Compare1, NULL, HexString, 0);\r
- StatementWalker += StrLen(StatementWalker) + 1;\r
+ if (ShellIsHexOrDecimalNumber (StatementWalker, FALSE, FALSE)) {\r
+ UnicodeSPrint (HexString, sizeof (HexString), L"0x%x", ShellStrToUintn (StatementWalker)|MAX_BIT);\r
+ ASSERT (Compare1 == NULL);\r
+ Compare1 = StrnCatGrow (&Compare1, NULL, HexString, 0);\r
+ StatementWalker += StrLen (StatementWalker) + 1;\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"efierror");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"efierror");\r
Status = EFI_INVALID_PARAMETER;\r
}\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"efierror");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"efierror");\r
Status = EFI_INVALID_PARAMETER;\r
}\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"pierror")) {\r
- TempSpot = StrStr(StatementWalker, L")");\r
- if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"(") && TempSpot != NULL) {\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"pierror", &Match)) && Match) {\r
+ TempSpot = StrStr (StatementWalker, L")");\r
+ if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"(", &Match)) && Match && (TempSpot != NULL)) {\r
*TempSpot = CHAR_NULL;\r
- if (ShellIsHexOrDecimalNumber(StatementWalker, FALSE, FALSE)) {\r
- UnicodeSPrint(HexString, sizeof(HexString), L"0x%x", ShellStrToUintn(StatementWalker)|MAX_BIT|(MAX_BIT>>2));\r
- ASSERT(Compare1 == NULL);\r
- Compare1 = StrnCatGrow(&Compare1, NULL, HexString, 0);\r
- StatementWalker += StrLen(StatementWalker) + 1;\r
+ if (ShellIsHexOrDecimalNumber (StatementWalker, FALSE, FALSE)) {\r
+ UnicodeSPrint (HexString, sizeof (HexString), L"0x%x", ShellStrToUintn (StatementWalker)|MAX_BIT|(MAX_BIT>>2));\r
+ ASSERT (Compare1 == NULL);\r
+ Compare1 = StrnCatGrow (&Compare1, NULL, HexString, 0);\r
+ StatementWalker += StrLen (StatementWalker) + 1;\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"pierror");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"pierror");\r
Status = EFI_INVALID_PARAMETER;\r
}\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"pierror");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"pierror");\r
Status = EFI_INVALID_PARAMETER;\r
}\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"oemerror")) {\r
- TempSpot = StrStr(StatementWalker, L")");\r
- if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"(") && TempSpot != NULL) {\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"oemerror", &Match)) && Match) {\r
+ TempSpot = StrStr (StatementWalker, L")");\r
+ if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"(", &Match)) && Match && (TempSpot != NULL)) {\r
TempSpot = CHAR_NULL;\r
- if (ShellIsHexOrDecimalNumber(StatementWalker, FALSE, FALSE)) {\r
- UnicodeSPrint(HexString, sizeof(HexString), L"0x%x", ShellStrToUintn(StatementWalker)|MAX_BIT|(MAX_BIT>>1));\r
- ASSERT(Compare1 == NULL);\r
- Compare1 = StrnCatGrow(&Compare1, NULL, HexString, 0);\r
- StatementWalker += StrLen(StatementWalker) + 1;\r
+ if (ShellIsHexOrDecimalNumber (StatementWalker, FALSE, FALSE)) {\r
+ UnicodeSPrint (HexString, sizeof (HexString), L"0x%x", ShellStrToUintn (StatementWalker)|MAX_BIT|(MAX_BIT>>1));\r
+ ASSERT (Compare1 == NULL);\r
+ Compare1 = StrnCatGrow (&Compare1, NULL, HexString, 0);\r
+ StatementWalker += StrLen (StatementWalker) + 1;\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"oemerror");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"oemerror");\r
Status = EFI_INVALID_PARAMETER;\r
}\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"oemerror");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"oemerror");\r
Status = EFI_INVALID_PARAMETER;\r
}\r
} else {\r
- ASSERT(Compare1 == NULL);\r
+ ASSERT (Compare1 == NULL);\r
if (EndParameterNumber - StartParameterNumber > 2) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_STARTING), gShellLevel1HiiHandle, gEfiShellParametersProtocol->Argv[StartParameterNumber+2]);\r
- Status = EFI_INVALID_PARAMETER;\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_STARTING), gShellLevel1HiiHandle, gEfiShellParametersProtocol->Argv[StartParameterNumber+2]);\r
+ Status = EFI_INVALID_PARAMETER;\r
} else {\r
//\r
// must be a raw string\r
//\r
- Compare1 = StrnCatGrow(&Compare1, NULL, StatementWalker, 0);\r
+ Compare1 = StrnCatGrow (&Compare1, NULL, StatementWalker, 0);\r
}\r
}\r
\r
//\r
// get the operator\r
//\r
- ASSERT(StartParameterNumber+1<EndParameterNumber);\r
+ ASSERT (StartParameterNumber+1 < EndParameterNumber);\r
StatementWalker = gEfiShellParametersProtocol->Argv[StartParameterNumber+1];\r
- if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"gt")) {\r
+ if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"gt", &Match)) && Match) {\r
BinOp = OperatorGreaterThan;\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"lt")) {\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"lt", &Match)) && Match) {\r
BinOp = OperatorLessThan;\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"eq")) {\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"eq", &Match)) && Match) {\r
BinOp = OperatorEqual;\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"ne")) {\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"ne", &Match)) && Match) {\r
BinOp = OperatorNotEqual;\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"ge")) {\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"ge", &Match)) && Match) {\r
BinOp = OperatorGreatorOrEqual;\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"le")) {\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"le", &Match)) && Match) {\r
BinOp = OperatorLessOrEqual;\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"==")) {\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"==", &Match)) && Match) {\r
BinOp = OperatorEqual;\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"ugt")) {\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"ugt", &Match)) && Match) {\r
BinOp = OperatorUnisgnedGreaterThan;\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"ult")) {\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"ult", &Match)) && Match) {\r
BinOp = OperatorUnsignedLessThan;\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"uge")) {\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"uge", &Match)) && Match) {\r
BinOp = OperatorUnsignedGreaterOrEqual;\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"ule")) {\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"ule", &Match)) && Match) {\r
BinOp = OperatorUnsignedLessOrEqual;\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_INVALID_BINOP), gShellLevel1HiiHandle, StatementWalker);\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_INVALID_BINOP), gShellLevel1HiiHandle, StatementWalker);\r
Status = EFI_INVALID_PARAMETER;\r
}\r
\r
//\r
// get the second item\r
//\r
- ASSERT(StartParameterNumber+2<=EndParameterNumber);\r
+ ASSERT (StartParameterNumber+2 <= EndParameterNumber);\r
StatementWalker = gEfiShellParametersProtocol->Argv[StartParameterNumber+2];\r
- if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"efierror")) {\r
- TempSpot = StrStr(StatementWalker, L")");\r
- if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"(") && TempSpot != NULL) {\r
+ if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"efierror", &Match)) && Match) {\r
+ TempSpot = StrStr (StatementWalker, L")");\r
+ if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"(", &Match)) && Match && (TempSpot != NULL)) {\r
TempSpot = CHAR_NULL;\r
- if (ShellIsHexOrDecimalNumber(StatementWalker, FALSE, FALSE)) {\r
- UnicodeSPrint(HexString, sizeof(HexString), L"0x%x", ShellStrToUintn(StatementWalker)|MAX_BIT);\r
- ASSERT(Compare2 == NULL);\r
- Compare2 = StrnCatGrow(&Compare2, NULL, HexString, 0);\r
- StatementWalker += StrLen(StatementWalker) + 1;\r
+ if (ShellIsHexOrDecimalNumber (StatementWalker, FALSE, FALSE)) {\r
+ UnicodeSPrint (HexString, sizeof (HexString), L"0x%x", ShellStrToUintn (StatementWalker)|MAX_BIT);\r
+ ASSERT (Compare2 == NULL);\r
+ Compare2 = StrnCatGrow (&Compare2, NULL, HexString, 0);\r
+ StatementWalker += StrLen (StatementWalker) + 1;\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"efierror");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"efierror");\r
Status = EFI_INVALID_PARAMETER;\r
}\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"efierror");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"efierror");\r
Status = EFI_INVALID_PARAMETER;\r
}\r
- //\r
- // can this be collapsed into the above?\r
- //\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"pierror")) {\r
- TempSpot = StrStr(StatementWalker, L")");\r
- if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"(") && TempSpot != NULL) {\r
+\r
+ //\r
+ // can this be collapsed into the above?\r
+ //\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"pierror", &Match)) && Match) {\r
+ TempSpot = StrStr (StatementWalker, L")");\r
+ if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"(", &Match)) && Match && (TempSpot != NULL)) {\r
TempSpot = CHAR_NULL;\r
- if (ShellIsHexOrDecimalNumber(StatementWalker, FALSE, FALSE)) {\r
- UnicodeSPrint(HexString, sizeof(HexString), L"0x%x", ShellStrToUintn(StatementWalker)|MAX_BIT|(MAX_BIT>>2));\r
- ASSERT(Compare2 == NULL);\r
- Compare2 = StrnCatGrow(&Compare2, NULL, HexString, 0);\r
- StatementWalker += StrLen(StatementWalker) + 1;\r
+ if (ShellIsHexOrDecimalNumber (StatementWalker, FALSE, FALSE)) {\r
+ UnicodeSPrint (HexString, sizeof (HexString), L"0x%x", ShellStrToUintn (StatementWalker)|MAX_BIT|(MAX_BIT>>2));\r
+ ASSERT (Compare2 == NULL);\r
+ Compare2 = StrnCatGrow (&Compare2, NULL, HexString, 0);\r
+ StatementWalker += StrLen (StatementWalker) + 1;\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"pierror");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"pierror");\r
Status = EFI_INVALID_PARAMETER;\r
}\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"pierror");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"pierror");\r
Status = EFI_INVALID_PARAMETER;\r
}\r
- } else if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"oemerror")) {\r
- TempSpot = StrStr(StatementWalker, L")");\r
- if (IsNextFragment((CONST CHAR16**)(&StatementWalker), L"(") && TempSpot != NULL) {\r
+ } else if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"oemerror", &Match)) && Match) {\r
+ TempSpot = StrStr (StatementWalker, L")");\r
+ if (!EFI_ERROR (IsNextFragment ((CONST CHAR16 **)(&StatementWalker), L"(", &Match)) && Match && (TempSpot != NULL)) {\r
TempSpot = CHAR_NULL;\r
- if (ShellIsHexOrDecimalNumber(StatementWalker, FALSE, FALSE)) {\r
- UnicodeSPrint(HexString, sizeof(HexString), L"0x%x", ShellStrToUintn(StatementWalker)|MAX_BIT|(MAX_BIT>>1));\r
- ASSERT(Compare2 == NULL);\r
- Compare2 = StrnCatGrow(&Compare2, NULL, HexString, 0);\r
- StatementWalker += StrLen(StatementWalker) + 1;\r
+ if (ShellIsHexOrDecimalNumber (StatementWalker, FALSE, FALSE)) {\r
+ UnicodeSPrint (HexString, sizeof (HexString), L"0x%x", ShellStrToUintn (StatementWalker)|MAX_BIT|(MAX_BIT>>1));\r
+ ASSERT (Compare2 == NULL);\r
+ Compare2 = StrnCatGrow (&Compare2, NULL, HexString, 0);\r
+ StatementWalker += StrLen (StatementWalker) + 1;\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"oemerror");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"oemerror");\r
Status = EFI_INVALID_PARAMETER;\r
}\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"oemerror");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_IN), gShellLevel1HiiHandle, L"oemerror");\r
Status = EFI_INVALID_PARAMETER;\r
}\r
} else {\r
//\r
// must be a raw string\r
//\r
- ASSERT(Compare2 == NULL);\r
- Compare2 = StrnCatGrow(&Compare2, NULL, StatementWalker, 0);\r
+ ASSERT (Compare2 == NULL);\r
+ Compare2 = StrnCatGrow (&Compare2, NULL, StatementWalker, 0);\r
}\r
\r
- if (Compare1 != NULL && Compare2 != NULL && BinOp != OperatorMax) {\r
- OperationResult = TestOperation(Compare1, Compare2, BinOp, CaseInsensitive, ForceStringCompare);\r
+ if ((Compare1 != NULL) && (Compare2 != NULL) && (BinOp != OperatorMax)) {\r
+ OperationResult = TestOperation (Compare1, Compare2, BinOp, CaseInsensitive, ForceStringCompare);\r
}\r
\r
- SHELL_FREE_NON_NULL(Compare1);\r
- SHELL_FREE_NON_NULL(Compare2);\r
+ SHELL_FREE_NON_NULL (Compare1);\r
+ SHELL_FREE_NON_NULL (Compare2);\r
}\r
\r
//\r
// done processing do result...\r
//\r
\r
- if (!EFI_ERROR(Status)) {\r
+ if (!EFI_ERROR (Status)) {\r
if (NotPresent) {\r
OperationResult = (BOOLEAN)(!OperationResult);\r
}\r
- switch(OperatorToUse) {\r
+\r
+ switch (OperatorToUse) {\r
case EndTagOr:\r
*PassingState = (BOOLEAN)(*PassingState || OperationResult);\r
break;\r
*PassingState = (BOOLEAN)(OperationResult);\r
break;\r
default:\r
- ASSERT(FALSE);\r
+ ASSERT (FALSE);\r
}\r
}\r
+\r
return (Status);\r
}\r
\r
Break up the next part of the if statement (until the next 'and', 'or', or 'then').\r
\r
@param[in] ParameterNumber The current parameter number.\r
- @param[out] EndParameter Upon successful return, will point to the \r
+ @param[out] EndParameter Upon successful return, will point to the\r
parameter to start the next iteration with.\r
- @param[out] EndTag Upon successful return, will point to the \r
+ @param[out] EndTag Upon successful return, will point to the\r
type that was found at the end of this statement.\r
\r
@retval TRUE A valid statement was found.\r
@retval FALSE A valid statement was not found.\r
**/\r
BOOLEAN\r
-EFIAPI\r
BuildNextStatement (\r
IN UINTN ParameterNumber,\r
OUT UINTN *EndParameter,\r
{\r
*EndTag = EndTagMax;\r
\r
- for(\r
- ; ParameterNumber < gEfiShellParametersProtocol->Argc\r
- ; ParameterNumber++\r
- ) {\r
- if (gUnicodeCollation->StriColl(\r
- gUnicodeCollation,\r
- gEfiShellParametersProtocol->Argv[ParameterNumber],\r
- L"or") == 0) {\r
+ for (\r
+ ; ParameterNumber < gEfiShellParametersProtocol->Argc\r
+ ; ParameterNumber++\r
+ )\r
+ {\r
+ if (gUnicodeCollation->StriColl (\r
+ gUnicodeCollation,\r
+ gEfiShellParametersProtocol->Argv[ParameterNumber],\r
+ L"or"\r
+ ) == 0)\r
+ {\r
*EndParameter = ParameterNumber - 1;\r
- *EndTag = EndTagOr;\r
+ *EndTag = EndTagOr;\r
break;\r
- } else if (gUnicodeCollation->StriColl(\r
- gUnicodeCollation,\r
- gEfiShellParametersProtocol->Argv[ParameterNumber],\r
- L"and") == 0) {\r
+ } else if (gUnicodeCollation->StriColl (\r
+ gUnicodeCollation,\r
+ gEfiShellParametersProtocol->Argv[ParameterNumber],\r
+ L"and"\r
+ ) == 0)\r
+ {\r
*EndParameter = ParameterNumber - 1;\r
- *EndTag = EndTagAnd;\r
+ *EndTag = EndTagAnd;\r
break;\r
- } else if (gUnicodeCollation->StriColl(\r
- gUnicodeCollation,\r
- gEfiShellParametersProtocol->Argv[ParameterNumber],\r
- L"then") == 0) {\r
+ } else if (gUnicodeCollation->StriColl (\r
+ gUnicodeCollation,\r
+ gEfiShellParametersProtocol->Argv[ParameterNumber],\r
+ L"then"\r
+ ) == 0)\r
+ {\r
*EndParameter = ParameterNumber - 1;\r
- *EndTag = EndTagThen;\r
+ *EndTag = EndTagThen;\r
break;\r
}\r
}\r
+\r
if (*EndTag == EndTagMax) {\r
return (FALSE);\r
}\r
+\r
return (TRUE);\r
}\r
\r
@retval FALSE Something went wrong.\r
**/\r
BOOLEAN\r
-EFIAPI\r
MoveToTagSpecial (\r
- IN SCRIPT_FILE *ScriptFile\r
+ IN SCRIPT_FILE *ScriptFile\r
)\r
{\r
- SCRIPT_COMMAND_LIST *CommandNode;\r
- BOOLEAN Found;\r
- UINTN TargetCount;\r
- CHAR16 *CommandName;\r
- CHAR16 *CommandWalker;\r
- CHAR16 *TempLocation;\r
+ SCRIPT_COMMAND_LIST *CommandNode;\r
+ BOOLEAN Found;\r
+ UINTN TargetCount;\r
+ CHAR16 *CommandName;\r
+ CHAR16 *CommandWalker;\r
+ CHAR16 *TempLocation;\r
\r
- TargetCount = 1;\r
- Found = FALSE;\r
+ TargetCount = 1;\r
+ Found = FALSE;\r
\r
if (ScriptFile == NULL) {\r
return FALSE;\r
}\r
\r
- for (CommandNode = (SCRIPT_COMMAND_LIST *)GetNextNode(&ScriptFile->CommandList, &ScriptFile->CurrentCommand->Link), Found = FALSE\r
- ; !IsNull(&ScriptFile->CommandList, &CommandNode->Link) && !Found\r
- ; CommandNode = (SCRIPT_COMMAND_LIST *)GetNextNode(&ScriptFile->CommandList, &CommandNode->Link)\r
- ){\r
-\r
+ for (CommandNode = (SCRIPT_COMMAND_LIST *)GetNextNode (&ScriptFile->CommandList, &ScriptFile->CurrentCommand->Link), Found = FALSE\r
+ ; !IsNull (&ScriptFile->CommandList, &CommandNode->Link) && !Found\r
+ ; CommandNode = (SCRIPT_COMMAND_LIST *)GetNextNode (&ScriptFile->CommandList, &CommandNode->Link)\r
+ )\r
+ {\r
//\r
// get just the first part of the command line...\r
//\r
- CommandName = NULL;\r
- CommandName = StrnCatGrow(&CommandName, NULL, CommandNode->Cl, 0);\r
+ CommandName = NULL;\r
+ CommandName = StrnCatGrow (&CommandName, NULL, CommandNode->Cl, 0);\r
if (CommandName == NULL) {\r
continue;\r
}\r
+\r
CommandWalker = CommandName;\r
- while (CommandWalker[0] == L' ') {\r
+\r
+ //\r
+ // Skip leading spaces and tabs.\r
+ //\r
+ while ((CommandWalker[0] == L' ') || (CommandWalker[0] == L'\t')) {\r
CommandWalker++;\r
}\r
- TempLocation = StrStr(CommandWalker, L" ");\r
+\r
+ TempLocation = StrStr (CommandWalker, L" ");\r
\r
if (TempLocation != NULL) {\r
*TempLocation = CHAR_NULL;\r
//\r
// did we find a nested item ?\r
//\r
- if (gUnicodeCollation->StriColl(\r
- gUnicodeCollation,\r
- (CHAR16*)CommandWalker,\r
- L"If") == 0) {\r
+ if (gUnicodeCollation->StriColl (\r
+ gUnicodeCollation,\r
+ (CHAR16 *)CommandWalker,\r
+ L"If"\r
+ ) == 0)\r
+ {\r
TargetCount++;\r
- } else if (TargetCount == 1 && gUnicodeCollation->StriColl(\r
- gUnicodeCollation,\r
- (CHAR16*)CommandWalker,\r
- (CHAR16*)L"else") == 0) {\r
+ } else if ((TargetCount == 1) && (gUnicodeCollation->StriColl (\r
+ gUnicodeCollation,\r
+ (CHAR16 *)CommandWalker,\r
+ (CHAR16 *)L"else"\r
+ ) == 0))\r
+ {\r
//\r
// else can only decrement the last part... not an nested if\r
// hence the TargetCount compare added\r
//\r
TargetCount--;\r
- } else if (gUnicodeCollation->StriColl(\r
- gUnicodeCollation,\r
- (CHAR16*)CommandWalker,\r
- (CHAR16*)L"endif") == 0) {\r
+ } else if (gUnicodeCollation->StriColl (\r
+ gUnicodeCollation,\r
+ (CHAR16 *)CommandWalker,\r
+ (CHAR16 *)L"endif"\r
+ ) == 0)\r
+ {\r
TargetCount--;\r
}\r
+\r
if (TargetCount == 0) {\r
- ScriptFile->CurrentCommand = (SCRIPT_COMMAND_LIST *)GetNextNode(&ScriptFile->CommandList, &CommandNode->Link);\r
- Found = TRUE;\r
+ ScriptFile->CurrentCommand = (SCRIPT_COMMAND_LIST *)GetNextNode (&ScriptFile->CommandList, &CommandNode->Link);\r
+ Found = TRUE;\r
}\r
\r
//\r
// Free the memory for this loop...\r
//\r
- SHELL_FREE_NON_NULL(CommandName);\r
+ SHELL_FREE_NON_NULL (CommandName);\r
}\r
+\r
return (Found);\r
}\r
\r
@retval EFI_NOT_FOUND The ending tag could not be found.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
PerformResultOperation (\r
- IN CONST BOOLEAN Result\r
+ IN CONST BOOLEAN Result\r
)\r
{\r
- if (Result || MoveToTagSpecial(ShellCommandGetCurrentScriptFile())) {\r
+ if (Result || MoveToTagSpecial (ShellCommandGetCurrentScriptFile ())) {\r
return (EFI_SUCCESS);\r
}\r
+\r
return (EFI_NOT_FOUND);\r
}\r
\r
IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_STATUS Status;\r
- SHELL_STATUS ShellStatus;\r
- BOOLEAN CaseInsensitive;\r
- BOOLEAN ForceString;\r
- UINTN CurrentParameter;\r
- UINTN EndParameter;\r
- BOOLEAN CurrentValue;\r
- END_TAG_TYPE Ending;\r
- END_TAG_TYPE PreviousEnding;\r
- SCRIPT_FILE *CurrentScriptFile;\r
-\r
- Status = CommandInit();\r
- ASSERT_EFI_ERROR(Status);\r
-\r
- if (!gEfiShellProtocol->BatchIsActive()) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_NO_SCRIPT), gShellLevel1HiiHandle, L"If");\r
+ EFI_STATUS Status;\r
+ SHELL_STATUS ShellStatus;\r
+ BOOLEAN CaseInsensitive;\r
+ BOOLEAN ForceString;\r
+ UINTN CurrentParameter;\r
+ UINTN EndParameter;\r
+ BOOLEAN CurrentValue;\r
+ END_TAG_TYPE Ending;\r
+ END_TAG_TYPE PreviousEnding;\r
+ SCRIPT_FILE *CurrentScriptFile;\r
+\r
+ Status = CommandInit ();\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ if (!gEfiShellProtocol->BatchIsActive ()) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_NO_SCRIPT), gShellLevel1HiiHandle, L"if");\r
return (SHELL_UNSUPPORTED);\r
}\r
\r
if (gEfiShellParametersProtocol->Argc < 3) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel1HiiHandle);\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel1HiiHandle, L"if");\r
return (SHELL_INVALID_PARAMETER);\r
}\r
\r
//\r
// Make sure that an End exists.\r
//\r
- CurrentScriptFile = ShellCommandGetCurrentScriptFile();\r
- if (!MoveToTag(GetNextNode, L"endif", L"if", NULL, CurrentScriptFile, TRUE, TRUE, FALSE)) {\r
- ShellPrintHiiEx(\r
- -1, \r
- -1, \r
- NULL, \r
- STRING_TOKEN (STR_SYNTAX_NO_MATCHING), \r
- gShellLevel1HiiHandle, \r
- L"EnfIf", \r
- L"If", \r
- CurrentScriptFile!=NULL \r
- && CurrentScriptFile->CurrentCommand!=NULL\r
- ? CurrentScriptFile->CurrentCommand->Line:0);\r
+ CurrentScriptFile = ShellCommandGetCurrentScriptFile ();\r
+ if (!MoveToTag (GetNextNode, L"endif", L"if", NULL, CurrentScriptFile, TRUE, TRUE, FALSE)) {\r
+ ShellPrintHiiEx (\r
+ -1,\r
+ -1,\r
+ NULL,\r
+ STRING_TOKEN (STR_SYNTAX_NO_MATCHING),\r
+ gShellLevel1HiiHandle,\r
+ L"EndIf",\r
+ L"If",\r
+ CurrentScriptFile != NULL\r
+ && CurrentScriptFile->CurrentCommand != NULL\r
+ ? CurrentScriptFile->CurrentCommand->Line : 0\r
+ );\r
return (SHELL_DEVICE_ERROR);\r
}\r
\r
//\r
// initialize the shell lib (we must be in non-auto-init...)\r
//\r
- Status = ShellInitialize();\r
- ASSERT_EFI_ERROR(Status);\r
-\r
- CurrentParameter = 1;\r
- EndParameter = 0;\r
-\r
- if (gUnicodeCollation->StriColl(\r
- gUnicodeCollation,\r
- gEfiShellParametersProtocol->Argv[1],\r
- L"/i") == 0 ||\r
- gUnicodeCollation->StriColl(\r
- gUnicodeCollation,\r
- gEfiShellParametersProtocol->Argv[2],\r
- L"/i") == 0 ||\r
- (gEfiShellParametersProtocol->Argc > 3 && gUnicodeCollation->StriColl(\r
- gUnicodeCollation,\r
- gEfiShellParametersProtocol->Argv[3],\r
- L"/i") == 0)) {\r
+ Status = ShellInitialize ();\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ CurrentParameter = 1;\r
+ EndParameter = 0;\r
+\r
+ if ((gUnicodeCollation->StriColl (\r
+ gUnicodeCollation,\r
+ gEfiShellParametersProtocol->Argv[1],\r
+ L"/i"\r
+ ) == 0) ||\r
+ (gUnicodeCollation->StriColl (\r
+ gUnicodeCollation,\r
+ gEfiShellParametersProtocol->Argv[2],\r
+ L"/i"\r
+ ) == 0) ||\r
+ ((gEfiShellParametersProtocol->Argc > 3) && (gUnicodeCollation->StriColl (\r
+ gUnicodeCollation,\r
+ gEfiShellParametersProtocol->Argv[3],\r
+ L"/i"\r
+ ) == 0)))\r
+ {\r
CaseInsensitive = TRUE;\r
CurrentParameter++;\r
} else {\r
CaseInsensitive = FALSE;\r
}\r
- if (gUnicodeCollation->StriColl(\r
- gUnicodeCollation,\r
- gEfiShellParametersProtocol->Argv[1],\r
- L"/s") == 0 ||\r
- gUnicodeCollation->StriColl(\r
- gUnicodeCollation,\r
- gEfiShellParametersProtocol->Argv[2],\r
- L"/s") == 0 ||\r
- (gEfiShellParametersProtocol->Argc > 3 && gUnicodeCollation->StriColl(\r
- gUnicodeCollation,\r
- gEfiShellParametersProtocol->Argv[3],\r
- L"/s") == 0)) {\r
- ForceString = TRUE;\r
+\r
+ if ((gUnicodeCollation->StriColl (\r
+ gUnicodeCollation,\r
+ gEfiShellParametersProtocol->Argv[1],\r
+ L"/s"\r
+ ) == 0) ||\r
+ (gUnicodeCollation->StriColl (\r
+ gUnicodeCollation,\r
+ gEfiShellParametersProtocol->Argv[2],\r
+ L"/s"\r
+ ) == 0) ||\r
+ ((gEfiShellParametersProtocol->Argc > 3) && (gUnicodeCollation->StriColl (\r
+ gUnicodeCollation,\r
+ gEfiShellParametersProtocol->Argv[3],\r
+ L"/s"\r
+ ) == 0)))\r
+ {\r
+ ForceString = TRUE;\r
CurrentParameter++;\r
} else {\r
- ForceString = FALSE;\r
+ ForceString = FALSE;\r
}\r
\r
for ( ShellStatus = SHELL_SUCCESS, CurrentValue = FALSE, Ending = EndTagMax\r
- ; CurrentParameter < gEfiShellParametersProtocol->Argc && ShellStatus == SHELL_SUCCESS\r
- ; CurrentParameter++) {\r
- if (gUnicodeCollation->StriColl(\r
- gUnicodeCollation,\r
- gEfiShellParametersProtocol->Argv[CurrentParameter],\r
- L"then") == 0) {\r
+ ; CurrentParameter < gEfiShellParametersProtocol->Argc && ShellStatus == SHELL_SUCCESS\r
+ ; CurrentParameter++)\r
+ {\r
+ if (gUnicodeCollation->StriColl (\r
+ gUnicodeCollation,\r
+ gEfiShellParametersProtocol->Argv[CurrentParameter],\r
+ L"then"\r
+ ) == 0)\r
+ {\r
//\r
// we are at the then\r
//\r
if (CurrentParameter+1 != gEfiShellParametersProtocol->Argc) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_TEXT_AFTER_THEN), gShellLevel1HiiHandle);\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_TEXT_AFTER_THEN), gShellLevel1HiiHandle, L"if");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
- Status = PerformResultOperation(CurrentValue);\r
- if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_AFTER_BAD), gShellLevel1HiiHandle, gEfiShellParametersProtocol->Argv[CurrentParameter]);\r
+ Status = PerformResultOperation (CurrentValue);\r
+ if (EFI_ERROR (Status)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_AFTER_BAD), gShellLevel1HiiHandle, L"if", gEfiShellParametersProtocol->Argv[CurrentParameter]);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
}\r
//\r
// build up the next statement for analysis\r
//\r
- if (!BuildNextStatement(CurrentParameter, &EndParameter, &Ending)) {\r
- CurrentScriptFile = ShellCommandGetCurrentScriptFile();\r
- ShellPrintHiiEx(\r
- -1, \r
- -1, \r
- NULL, \r
- STRING_TOKEN (STR_SYNTAX_NO_MATCHING), \r
- gShellLevel1HiiHandle, \r
- L"Then", \r
+ if (!BuildNextStatement (CurrentParameter, &EndParameter, &Ending)) {\r
+ CurrentScriptFile = ShellCommandGetCurrentScriptFile ();\r
+ ShellPrintHiiEx (\r
+ -1,\r
+ -1,\r
+ NULL,\r
+ STRING_TOKEN (STR_SYNTAX_NO_MATCHING),\r
+ gShellLevel1HiiHandle,\r
+ L"Then",\r
L"If",\r
- CurrentScriptFile!=NULL \r
- && CurrentScriptFile->CurrentCommand!=NULL\r
- ? CurrentScriptFile->CurrentCommand->Line:0);\r
+ CurrentScriptFile != NULL\r
+ && CurrentScriptFile->CurrentCommand != NULL\r
+ ? CurrentScriptFile->CurrentCommand->Line : 0\r
+ );\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
//\r
// Analyze the statement\r
//\r
- Status = ProcessStatement(&CurrentValue, CurrentParameter, EndParameter, PreviousEnding, CaseInsensitive, ForceString);\r
- if (EFI_ERROR(Status)) {\r
-// ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_STARTING), gShellLevel1HiiHandle, gEfiShellParametersProtocol->Argv[CurrentParameter]);\r
+ Status = ProcessStatement (&CurrentValue, CurrentParameter, EndParameter, PreviousEnding, CaseInsensitive, ForceString);\r
+ if (EFI_ERROR (Status)) {\r
+ // ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_STARTING), gShellLevel1HiiHandle, gEfiShellParametersProtocol->Argv[CurrentParameter]);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
//\r
// Optomize to get out of the loop early...\r
//\r
- if ((Ending == EndTagOr && CurrentValue) || (Ending == EndTagAnd && !CurrentValue)) {\r
- Status = PerformResultOperation(CurrentValue);\r
- if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_AFTER_BAD), gShellLevel1HiiHandle, gEfiShellParametersProtocol->Argv[CurrentParameter]);\r
+ if (((Ending == EndTagOr) && CurrentValue) || ((Ending == EndTagAnd) && !CurrentValue)) {\r
+ Status = PerformResultOperation (CurrentValue);\r
+ if (EFI_ERROR (Status)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_AFTER_BAD), gShellLevel1HiiHandle, L"if", gEfiShellParametersProtocol->Argv[CurrentParameter]);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
+\r
break;\r
}\r
}\r
}\r
- if (ShellStatus == SHELL_SUCCESS){\r
+\r
+ if (ShellStatus == SHELL_SUCCESS) {\r
CurrentParameter = EndParameter;\r
//\r
// Skip over the or or and parameter.\r
//\r
- if (Ending == EndTagOr || Ending == EndTagAnd) {\r
+ if ((Ending == EndTagOr) || (Ending == EndTagAnd)) {\r
CurrentParameter++;\r
}\r
}\r
}\r
}\r
+\r
return (ShellStatus);\r
}\r
\r
IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- SCRIPT_FILE *CurrentScriptFile;\r
- ASSERT_EFI_ERROR(CommandInit());\r
+ EFI_STATUS Status;\r
+ SCRIPT_FILE *CurrentScriptFile;\r
+\r
+ Status = CommandInit ();\r
+ ASSERT_EFI_ERROR (Status);\r
\r
if (gEfiShellParametersProtocol->Argc > 1) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel1HiiHandle);\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel1HiiHandle, L"if");\r
return (SHELL_INVALID_PARAMETER);\r
}\r
\r
- if (!gEfiShellProtocol->BatchIsActive()) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_NO_SCRIPT), gShellLevel1HiiHandle, L"Else");\r
+ if (!gEfiShellProtocol->BatchIsActive ()) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_NO_SCRIPT), gShellLevel1HiiHandle, L"Else");\r
return (SHELL_UNSUPPORTED);\r
}\r
\r
- CurrentScriptFile = ShellCommandGetCurrentScriptFile();\r
-\r
- if (!MoveToTag(GetPreviousNode, L"if", L"endif", NULL, CurrentScriptFile, FALSE, TRUE, FALSE)) {\r
- ShellPrintHiiEx(\r
- -1, \r
- -1, \r
- NULL, \r
- STRING_TOKEN (STR_SYNTAX_NO_MATCHING), \r
- gShellLevel1HiiHandle, \r
- L"If", \r
- L"Else", \r
- CurrentScriptFile!=NULL \r
- && CurrentScriptFile->CurrentCommand!=NULL\r
- ? CurrentScriptFile->CurrentCommand->Line:0);\r
+ CurrentScriptFile = ShellCommandGetCurrentScriptFile ();\r
+\r
+ if (!MoveToTag (GetPreviousNode, L"if", L"endif", NULL, CurrentScriptFile, FALSE, TRUE, FALSE)) {\r
+ ShellPrintHiiEx (\r
+ -1,\r
+ -1,\r
+ NULL,\r
+ STRING_TOKEN (STR_SYNTAX_NO_MATCHING),\r
+ gShellLevel1HiiHandle,\r
+ L"If",\r
+ L"Else",\r
+ CurrentScriptFile != NULL\r
+ && CurrentScriptFile->CurrentCommand != NULL\r
+ ? CurrentScriptFile->CurrentCommand->Line : 0\r
+ );\r
return (SHELL_DEVICE_ERROR);\r
}\r
- if (!MoveToTag(GetPreviousNode, L"if", L"else", NULL, CurrentScriptFile, FALSE, TRUE, FALSE)) {\r
- ShellPrintHiiEx(\r
- -1, \r
- -1, \r
- NULL, \r
- STRING_TOKEN (STR_SYNTAX_NO_MATCHING), \r
- gShellLevel1HiiHandle, \r
- L"If", \r
- L"Else", \r
- CurrentScriptFile!=NULL \r
- && CurrentScriptFile->CurrentCommand!=NULL\r
- ? CurrentScriptFile->CurrentCommand->Line:0);\r
+\r
+ if (!MoveToTag (GetPreviousNode, L"if", L"else", NULL, CurrentScriptFile, FALSE, TRUE, FALSE)) {\r
+ ShellPrintHiiEx (\r
+ -1,\r
+ -1,\r
+ NULL,\r
+ STRING_TOKEN (STR_SYNTAX_NO_MATCHING),\r
+ gShellLevel1HiiHandle,\r
+ L"If",\r
+ L"Else",\r
+ CurrentScriptFile != NULL\r
+ && CurrentScriptFile->CurrentCommand != NULL\r
+ ? CurrentScriptFile->CurrentCommand->Line : 0\r
+ );\r
return (SHELL_DEVICE_ERROR);\r
}\r
\r
- if (!MoveToTag(GetNextNode, L"endif", L"if", NULL, CurrentScriptFile, FALSE, FALSE, FALSE)) {\r
- ShellPrintHiiEx(\r
- -1, \r
- -1, \r
- NULL, \r
- STRING_TOKEN (STR_SYNTAX_NO_MATCHING), \r
- gShellLevel1HiiHandle, \r
- L"EndIf", \r
- "Else", \r
- CurrentScriptFile!=NULL \r
- && CurrentScriptFile->CurrentCommand!=NULL\r
- ? CurrentScriptFile->CurrentCommand->Line:0);\r
+ if (!MoveToTag (GetNextNode, L"endif", L"if", NULL, CurrentScriptFile, FALSE, FALSE, FALSE)) {\r
+ ShellPrintHiiEx (\r
+ -1,\r
+ -1,\r
+ NULL,\r
+ STRING_TOKEN (STR_SYNTAX_NO_MATCHING),\r
+ gShellLevel1HiiHandle,\r
+ L"EndIf",\r
+ "Else",\r
+ CurrentScriptFile != NULL\r
+ && CurrentScriptFile->CurrentCommand != NULL\r
+ ? CurrentScriptFile->CurrentCommand->Line : 0\r
+ );\r
return (SHELL_DEVICE_ERROR);\r
}\r
\r
IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- SCRIPT_FILE *CurrentScriptFile;\r
- ASSERT_EFI_ERROR(CommandInit());\r
+ EFI_STATUS Status;\r
+ SCRIPT_FILE *CurrentScriptFile;\r
+\r
+ Status = CommandInit ();\r
+ ASSERT_EFI_ERROR (Status);\r
\r
if (gEfiShellParametersProtocol->Argc > 1) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel1HiiHandle);\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel1HiiHandle, L"if");\r
return (SHELL_INVALID_PARAMETER);\r
}\r
\r
- if (!gEfiShellProtocol->BatchIsActive()) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_NO_SCRIPT), gShellLevel1HiiHandle, L"Endif");\r
+ if (!gEfiShellProtocol->BatchIsActive ()) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_NO_SCRIPT), gShellLevel1HiiHandle, L"Endif");\r
return (SHELL_UNSUPPORTED);\r
}\r
\r
- CurrentScriptFile = ShellCommandGetCurrentScriptFile();\r
- if (!MoveToTag(GetPreviousNode, L"if", L"endif", NULL, CurrentScriptFile, FALSE, TRUE, FALSE)) {\r
- ShellPrintHiiEx(\r
- -1, \r
- -1, \r
- NULL, \r
- STRING_TOKEN (STR_SYNTAX_NO_MATCHING), \r
- gShellLevel1HiiHandle, \r
- L"If", \r
- L"EndIf", \r
- CurrentScriptFile!=NULL \r
- && CurrentScriptFile->CurrentCommand!=NULL\r
- ? CurrentScriptFile->CurrentCommand->Line:0);\r
+ CurrentScriptFile = ShellCommandGetCurrentScriptFile ();\r
+ if (!MoveToTag (GetPreviousNode, L"if", L"endif", NULL, CurrentScriptFile, FALSE, TRUE, FALSE)) {\r
+ ShellPrintHiiEx (\r
+ -1,\r
+ -1,\r
+ NULL,\r
+ STRING_TOKEN (STR_SYNTAX_NO_MATCHING),\r
+ gShellLevel1HiiHandle,\r
+ L"If",\r
+ L"EndIf",\r
+ CurrentScriptFile != NULL\r
+ && CurrentScriptFile->CurrentCommand != NULL\r
+ ? CurrentScriptFile->CurrentCommand->Line : 0\r
+ );\r
return (SHELL_DEVICE_ERROR);\r
}\r
\r