]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellLevel1CommandsLib/If.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / ShellPkg / Library / UefiShellLevel1CommandsLib / If.c
index f5bc12638bac3ac52007adab60e078e4a653a0d7..b4a6966edb2970f4e9003a48871737634a29a27a 100644 (file)
@@ -1,20 +1,14 @@
 /** @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
@@ -42,40 +36,50 @@ typedef enum {
 \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
@@ -87,20 +91,20 @@ IsNextFragment (
   @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
@@ -116,7 +120,6 @@ IsValidProfile (
   @return     The result of the comparison.\r
 **/\r
 BOOLEAN\r
-EFIAPI\r
 TestOperation (\r
   IN CONST CHAR16             *Compare1,\r
   IN CONST CHAR16             *Compare2,\r
@@ -125,214 +128,231 @@ TestOperation (
   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
@@ -343,36 +363,37 @@ TestOperation (
   @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
@@ -382,52 +403,62 @@ ProcessStatement (
   //\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
@@ -440,186 +471,188 @@ ProcessStatement (
     // 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
@@ -630,9 +663,10 @@ ProcessStatement (
         *PassingState = (BOOLEAN)(OperationResult);\r
         break;\r
       default:\r
-        ASSERT(FALSE);\r
+        ASSERT (FALSE);\r
     }\r
   }\r
+\r
   return (Status);\r
 }\r
 \r
@@ -640,16 +674,15 @@ ProcessStatement (
   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
@@ -658,36 +691,45 @@ BuildNextStatement (
 {\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
@@ -701,43 +743,48 @@ BuildNextStatement (
   @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
@@ -746,36 +793,44 @@ MoveToTagSpecial (
     //\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
@@ -788,14 +843,14 @@ MoveToTagSpecial (
   @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
@@ -812,110 +867,123 @@ ShellCommandRunIf (
   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
@@ -924,53 +992,57 @@ ShellCommandRunIf (
       //\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
@@ -987,62 +1059,69 @@ ShellCommandRunElse (
   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
@@ -1062,32 +1141,36 @@ ShellCommandRunEndIf (
   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