]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / UefiShellDebug1CommandsLib.c
index 226dd903971a794e43309e80ddfeb352ddd1b68f..c3682eeae476145f00f21f04239d9d2a1a9f877b 100644 (file)
@@ -1,25 +1,16 @@
 /** @file\r
   Main file for NULL named library for debug1 profile shell command functions.\r
 \r
-  Copyright (c) 2010 - 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
+  Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #include "UefiShellDebug1CommandsLib.h"\r
+#include <Library/BcfgCommandLib.h>\r
 \r
-STATIC CONST CHAR16 mFileName[] = L"Debug1Commands";\r
-EFI_HANDLE gShellDebug1HiiHandle = NULL;\r
-CONST EFI_GUID gShellDebug1HiiGuid = \\r
-  { \\r
-    0x25f200aa, 0xd3cb, 0x470a, { 0xbf, 0x51, 0xe7, 0xd1, 0x62, 0xd2, 0x2e, 0x6f } \\r
-  };\r
+STATIC CONST CHAR16  mFileName[]           = L"Debug1Commands";\r
+EFI_HII_HANDLE       gShellDebug1HiiHandle = NULL;\r
 \r
 /**\r
   Gets the debug file name.  This will be used if HII is not working.\r
@@ -27,7 +18,7 @@ CONST EFI_GUID gShellDebug1HiiGuid = \
   @retval NULL    No file is available.\r
   @return         The NULL-terminated filename to get help from.\r
 **/\r
-CONST CHAR16*\r
+CONST CHAR16 *\r
 EFIAPI\r
 ShellCommandGetManFileNameDebug1 (\r
   VOID\r
@@ -55,8 +46,8 @@ UefiShellDebug1CommandsLibConstructor (
   //\r
   // check our bit of the profiles mask\r
   //\r
-  if ((PcdGet8(PcdShellProfileMask) & BIT1) == 0) {\r
-    return (EFI_UNSUPPORTED);\r
+  if ((PcdGet8 (PcdShellProfileMask) & BIT1) == 0) {\r
+    return (EFI_SUCCESS);\r
   }\r
 \r
   //\r
@@ -70,35 +61,27 @@ UefiShellDebug1CommandsLibConstructor (
   //\r
   // install our shell command handlers that are always installed\r
   //\r
-  ShellCommandRegisterCommandName(L"setsize",       ShellCommandRunSetSize            , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_SETSIZE)      );\r
-  ShellCommandRegisterCommandName(L"comp",          ShellCommandRunComp               , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_COMP)         );\r
-  ShellCommandRegisterCommandName(L"mode",          ShellCommandRunMode               , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_MODE)         );\r
-  ShellCommandRegisterCommandName(L"memmap",        ShellCommandRunMemMap             , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_MEMMAP)       );\r
-  ShellCommandRegisterCommandName(L"eficompress",   ShellCommandRunEfiCompress        , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_EFICOMPRESS)  );\r
-  ShellCommandRegisterCommandName(L"efidecompress", ShellCommandRunEfiDecompress      , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_EFIDCOMPRESS) );\r
-  ShellCommandRegisterCommandName(L"dmem",          ShellCommandRunDmem               , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_DMEM)         );\r
-  ShellCommandRegisterCommandName(L"loadpcirom",    ShellCommandRunLoadPciRom         , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_LOAD_PCI_ROM) );\r
-  ShellCommandRegisterCommandName(L"mm",            ShellCommandRunMm                 , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_MM)           );\r
-  ShellCommandRegisterCommandName(L"setvar",        ShellCommandRunSetVar             , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_SETVAR)       );\r
-  ShellCommandRegisterCommandName(L"sermode",       ShellCommandRunSerMode            , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_SERMODE)      );\r
-  ShellCommandRegisterCommandName(L"pci",           ShellCommandRunPci                , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_PCI)          );\r
-  ShellCommandRegisterCommandName(L"smbiosview",    ShellCommandRunSmbiosView         , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_SMBIOSVIEW)   );\r
-  ShellCommandRegisterCommandName(L"dmpstore",      ShellCommandRunDmpStore           , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_DMPSTORE)     );\r
-  ShellCommandRegisterCommandName(L"dblk",          ShellCommandRunDblk               , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_DBLK)         );\r
-  ShellCommandRegisterCommandName(L"edit",          ShellCommandRunEdit               , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_EDIT)         );\r
-  ShellCommandRegisterCommandName(L"hexedit",       ShellCommandRunHexEdit            , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_HEXEDIT)      );\r
-\r
-  //\r
-  // check install profile bit of the profiles mask is set\r
-  //\r
-  if ((PcdGet8(PcdShellProfileMask) & BIT2) == 0) {\r
-    ShellCommandRegisterCommandName(L"bcfg",        ShellCommandRunBcfg               , ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN(STR_GET_HELP_BCFG)         );\r
-  }\r
-\r
-\r
-\r
-\r
-  ShellCommandRegisterAlias(L"dmem", L"mem");\r
+  ShellCommandRegisterCommandName (L"setsize", ShellCommandRunSetSize, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_SETSIZE));\r
+  ShellCommandRegisterCommandName (L"comp", ShellCommandRunComp, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_COMP));\r
+  ShellCommandRegisterCommandName (L"mode", ShellCommandRunMode, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_MODE));\r
+  ShellCommandRegisterCommandName (L"memmap", ShellCommandRunMemMap, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_MEMMAP));\r
+  ShellCommandRegisterCommandName (L"eficompress", ShellCommandRunEfiCompress, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_EFICOMPRESS));\r
+  ShellCommandRegisterCommandName (L"efidecompress", ShellCommandRunEfiDecompress, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_EFIDCOMPRESS));\r
+  ShellCommandRegisterCommandName (L"dmem", ShellCommandRunDmem, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_DMEM));\r
+  ShellCommandRegisterCommandName (L"loadpcirom", ShellCommandRunLoadPciRom, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_LOAD_PCI_ROM));\r
+  ShellCommandRegisterCommandName (L"mm", ShellCommandRunMm, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_MM));\r
+  ShellCommandRegisterCommandName (L"setvar", ShellCommandRunSetVar, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_SETVAR));\r
+  ShellCommandRegisterCommandName (L"sermode", ShellCommandRunSerMode, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_SERMODE));\r
+  ShellCommandRegisterCommandName (L"pci", ShellCommandRunPci, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_PCI));\r
+  ShellCommandRegisterCommandName (L"smbiosview", ShellCommandRunSmbiosView, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_SMBIOSVIEW));\r
+  ShellCommandRegisterCommandName (L"dmpstore", ShellCommandRunDmpStore, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_DMPSTORE));\r
+  ShellCommandRegisterCommandName (L"dblk", ShellCommandRunDblk, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_DBLK));\r
+  ShellCommandRegisterCommandName (L"edit", ShellCommandRunEdit, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_EDIT));\r
+  ShellCommandRegisterCommandName (L"hexedit", ShellCommandRunHexEdit, ShellCommandGetManFileNameDebug1, 0, L"Debug1", TRUE, gShellDebug1HiiHandle, STRING_TOKEN (STR_GET_HELP_HEXEDIT));\r
+\r
+  ShellCommandRegisterAlias (L"dmem", L"mem");\r
+\r
+  BcfgLibraryRegisterBcfgCommand (ImageHandle, SystemTable, L"Debug1");\r
 \r
   return (EFI_SUCCESS);\r
 }\r
@@ -117,130 +100,31 @@ UefiShellDebug1CommandsLibDestructor (
   )\r
 {\r
   if (gShellDebug1HiiHandle != NULL) {\r
-    HiiRemovePackages(gShellDebug1HiiHandle);\r
+    HiiRemovePackages (gShellDebug1HiiHandle);\r
   }\r
-  return (EFI_SUCCESS);\r
-}\r
-\r
-STATIC CONST CHAR8 Hex[] = {\r
-  '0',\r
-  '1',\r
-  '2',\r
-  '3',\r
-  '4',\r
-  '5',\r
-  '6',\r
-  '7',\r
-  '8',\r
-  '9',\r
-  'A',\r
-  'B',\r
-  'C',\r
-  'D',\r
-  'E',\r
-  'F'\r
-};\r
-\r
-/**\r
-  Dump some hexadecimal data to the screen.\r
-\r
-  @param[in] Indent     How many spaces to indent the output.\r
-  @param[in] Offset     The offset of the printing.\r
-  @param[in] DataSize   The size in bytes of UserData.\r
-  @param[in] UserData   The data to print out.\r
-**/\r
-VOID\r
-EFIAPI\r
-DumpHex (\r
-  IN UINTN        Indent,\r
-  IN UINTN        Offset,\r
-  IN UINTN        DataSize,\r
-  IN VOID         *UserData\r
-  )\r
-{\r
-  UINT8 *Data;\r
-\r
-  CHAR8 Val[50];\r
-\r
-  CHAR8 Str[20];\r
-\r
-  UINT8 TempByte;\r
-  UINTN Size;\r
-  UINTN Index;\r
-\r
-  Data = UserData;\r
-  while (DataSize != 0) {\r
-    Size = 16;\r
-    if (Size > DataSize) {\r
-      Size = DataSize;\r
-    }\r
-\r
-    for (Index = 0; Index < Size; Index += 1) {\r
-      TempByte            = Data[Index];\r
-      Val[Index * 3 + 0]  = Hex[TempByte >> 4];\r
-      Val[Index * 3 + 1]  = Hex[TempByte & 0xF];\r
-      Val[Index * 3 + 2]  = (CHAR8) ((Index == 7) ? '-' : ' ');\r
-      Str[Index]          = (CHAR8) ((TempByte < ' ' || TempByte > 'z') ? '.' : TempByte);\r
-    }\r
-\r
-    Val[Index * 3]  = 0;\r
-    Str[Index]      = 0;\r
-    ShellPrintEx(-1, -1, L"%*a%02X: %-.48a *%a*\r\n", Indent, "", Offset, Val, Str);\r
 \r
-    Data += Size;\r
-    Offset += Size;\r
-    DataSize -= Size;\r
-  }\r
-}\r
-\r
-/**\r
-  Convert a Unicode character to upper case only if\r
-  it maps to a valid small-case ASCII character.\r
-\r
-  This internal function only deal with Unicode character\r
-  which maps to a valid small-case ASCII character, i.e.\r
-  L'a' to L'z'. For other Unicode character, the input character\r
-  is returned directly.\r
-\r
-  @param  Char  The character to convert.\r
-\r
-  @retval LowerCharacter   If the Char is with range L'a' to L'z'.\r
-  @retval Unchanged        Otherwise.\r
-\r
-\r
-  //Stolen from MdePkg Baselib\r
-**/\r
-CHAR16\r
-EFIAPI\r
-CharToUpper (\r
-  IN      CHAR16                    Char\r
-  )\r
-{\r
-  if (Char >= L'a' && Char <= L'z') {\r
-    return (CHAR16) (Char - (L'a' - L'A'));\r
-  }\r
-\r
-  return Char;\r
+  BcfgLibraryUnregisterBcfgCommand (ImageHandle, SystemTable);\r
+  return (EFI_SUCCESS);\r
 }\r
 \r
 /**\r
   Function returns a system configuration table that is stored in the\r
   EFI System Table based on the provided GUID.\r
 \r
-  @param[in]  TableGuid    A pointer to the table's GUID type.\r
-  @param[in,out] Table     On exit, a pointer to a system configuration table.\r
+  @param[in]  TableGuid     A pointer to the table's GUID type.\r
+  @param[in, out] Table     On exit, a pointer to a system configuration table.\r
 \r
   @retval EFI_SUCCESS      A configuration table matching TableGuid was found.\r
   @retval EFI_NOT_FOUND    A configuration table matching TableGuid was not found.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 GetSystemConfigurationTable (\r
-  IN EFI_GUID *TableGuid,\r
-  IN OUT VOID **Table\r
+  IN EFI_GUID  *TableGuid,\r
+  IN OUT VOID  **Table\r
   )\r
 {\r
-  UINTN Index;\r
+  UINTN  Index;\r
+\r
   ASSERT (Table != NULL);\r
 \r
   for (Index = 0; Index < gST->NumberOfTableEntries; Index++) {\r
@@ -253,178 +137,22 @@ GetSystemConfigurationTable (
   return EFI_NOT_FOUND;\r
 }\r
 \r
-/**\r
-  Convert a Unicode character to numerical value.\r
-\r
-  This internal function only deal with Unicode character\r
-  which maps to a valid hexadecimal ASII character, i.e.\r
-  L'0' to L'9', L'a' to L'f' or L'A' to L'F'. For other\r
-  Unicode character, the value returned does not make sense.\r
-\r
-  @param  Char  The character to convert.\r
-\r
-  @return The numerical value converted.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-HexCharToUintn (\r
-  IN      CHAR16                    Char\r
-  )\r
-{\r
-  if (Char >= L'0' && Char <= L'9') {\r
-    return Char - L'0';\r
-  }\r
-\r
-  return (UINTN) (10 + CharToUpper (Char) - L'A');\r
-}\r
-\r
-/**\r
-  Convert a string representation of a guid to a Guid value.\r
-\r
-  @param[in] StringGuid   The pointer to the string of a guid.\r
-  @param[in,out] Guid     The pointer to the GUID structure to populate.\r
-\r
-  @retval EFI_INVALID_PARAMETER   A parameter was invalid.\r
-  @retval EFI_SUCCESS             The conversion was successful.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-ConvertStringToGuid (\r
-  IN CONST CHAR16 *StringGuid,\r
-  IN OUT EFI_GUID *Guid\r
-  )\r
-{\r
-  CHAR16  *TempCopy;\r
-  CHAR16  *TempSpot;\r
-  CHAR16  *Walker;\r
-  UINT64  TempVal;\r
-  EFI_STATUS Status;\r
-\r
-  if (StringGuid == NULL) {\r
-    return (EFI_INVALID_PARAMETER);\r
-  } else if (StrLen(StringGuid) != 36) {\r
-    return (EFI_INVALID_PARAMETER);\r
-  } \r
-  TempCopy = NULL;\r
-  TempCopy = StrnCatGrow(&TempCopy, NULL, StringGuid, 0);\r
-  Walker   = TempCopy;\r
-  TempSpot = StrStr(Walker, L"-");\r
-  *TempSpot = CHAR_NULL;\r
-  Status = ShellConvertStringToUint64(Walker, &TempVal, TRUE, FALSE);\r
-  if (EFI_ERROR(Status)) {\r
-    FreePool(TempCopy);\r
-    return (Status);\r
-  }\r
-  Guid->Data1 = (UINT32)TempVal;\r
-  Walker += 9;\r
-  TempSpot = StrStr(Walker, L"-");\r
-  *TempSpot = CHAR_NULL;\r
-  Status = ShellConvertStringToUint64(Walker, &TempVal, TRUE, FALSE);\r
-  if (EFI_ERROR(Status)) {\r
-    FreePool(TempCopy);\r
-    return (Status);\r
-  }\r
-  Guid->Data2 = (UINT16)TempVal;\r
-  Walker += 5;\r
-  TempSpot = StrStr(Walker, L"-");\r
-  *TempSpot = CHAR_NULL;\r
-  Status = ShellConvertStringToUint64(Walker, &TempVal, TRUE, FALSE);\r
-  if (EFI_ERROR(Status)) {\r
-    FreePool(TempCopy);\r
-    return (Status);\r
-  }\r
-  Guid->Data3 = (UINT16)TempVal;\r
-  Walker += 5;\r
-  Guid->Data4[0] = (UINT8)(HexCharToUintn(Walker[0]) * 16);\r
-  Guid->Data4[0] = (UINT8)(Guid->Data4[0]+ (UINT8)HexCharToUintn(Walker[1]));\r
-  Walker += 2;\r
-  Guid->Data4[1] = (UINT8)(HexCharToUintn(Walker[0]) * 16);\r
-  Guid->Data4[1] = (UINT8)(Guid->Data4[1] + (UINT8)HexCharToUintn(Walker[1]));\r
-  Walker += 3;\r
-  Guid->Data4[2] = (UINT8)(HexCharToUintn(Walker[0]) * 16);\r
-  Guid->Data4[2] = (UINT8)(Guid->Data4[2] + (UINT8)HexCharToUintn(Walker[1]));\r
-  Walker += 2;\r
-  Guid->Data4[3] = (UINT8)(HexCharToUintn(Walker[0]) * 16);\r
-  Guid->Data4[3] = (UINT8)(Guid->Data4[3] + (UINT8)HexCharToUintn(Walker[1]));\r
-  Walker += 2;\r
-  Guid->Data4[4] = (UINT8)(HexCharToUintn(Walker[0]) * 16);\r
-  Guid->Data4[4] = (UINT8)(Guid->Data4[4] + (UINT8)HexCharToUintn(Walker[1]));\r
-  Walker += 2;\r
-  Guid->Data4[5] = (UINT8)(HexCharToUintn(Walker[0]) * 16);\r
-  Guid->Data4[5] = (UINT8)(Guid->Data4[5] + (UINT8)HexCharToUintn(Walker[1]));\r
-  Walker += 2;\r
-  Guid->Data4[6] = (UINT8)(HexCharToUintn(Walker[0]) * 16);\r
-  Guid->Data4[6] = (UINT8)(Guid->Data4[6] + (UINT8)HexCharToUintn(Walker[1]));\r
-  Walker += 2;\r
-  Guid->Data4[7] = (UINT8)(HexCharToUintn(Walker[0]) * 16);\r
-  Guid->Data4[7] = (UINT8)(Guid->Data4[7] + (UINT8)HexCharToUintn(Walker[1]));\r
-  FreePool(TempCopy);\r
-  return (EFI_SUCCESS);\r
-}\r
-\r
-CHAR16  TempBufferCatSPrint[1000];\r
-/** \r
-  Appends a formatted Unicode string to a Null-terminated Unicode string\r
\r
-  This function appends a formatted Unicode string to the Null-terminated \r
-  Unicode string specified by String.   String is optional and may be NULL.\r
-  Storage for the formatted Unicode string returned is allocated using \r
-  AllocateZeroPool().  The pointer to the appended string is returned.  The caller\r
-  is responsible for freeing the returned string.\r
\r
-  If String is not NULL and not aligned on a 16-bit boundary, then ASSERT().\r
-  If Format is NULL, then ASSERT().\r
-  If Format is not aligned on a 16-bit boundary, then ASSERT().\r
\r
-  @param String   A null-terminated Unicode string.\r
-  @param FormatString  A null-terminated Unicode format string.\r
-  @param ...      The variable argument list whose contents are accessed based \r
-                  on the format string specified by Format.\r
-\r
-  @retval NULL    There was not enough available memory.\r
-  @return         Null terminated Unicode string is that is the formatted \r
-                  string appended to String.\r
-  @sa CatVSPrint\r
-**/\r
-CHAR16*\r
-EFIAPI\r
-CatSPrint (\r
-  IN  CONST CHAR16  *String OPTIONAL,\r
-  IN  CONST CHAR16  *FormatString,\r
-  ...\r
-  )\r
-{\r
-  VA_LIST Marker;\r
-  UINTN   StringLength;\r
-  if (String != NULL) {\r
-    StrCpy(TempBufferCatSPrint, String);\r
-  } else {\r
-    *TempBufferCatSPrint = CHAR_NULL;\r
-  }\r
-  VA_START (Marker, FormatString);\r
-  StringLength = StrLen(TempBufferCatSPrint);\r
-\r
-  UnicodeVSPrint(TempBufferCatSPrint+StrLen(TempBufferCatSPrint), 1000-StringLength, FormatString, Marker);\r
-  return (AllocateCopyPool(StrSize(TempBufferCatSPrint), TempBufferCatSPrint));\r
-}\r
-\r
 /**\r
   Clear the line at the specified Row.\r
-  \r
+\r
   @param[in] Row                The row number to be cleared ( start from 1 )\r
   @param[in] LastCol            The last printable column.\r
   @param[in] LastRow            The last printable row.\r
 **/\r
 VOID\r
-EFIAPI\r
 EditorClearLine (\r
-  IN UINTN Row,\r
-  IN UINTN LastCol,\r
-  IN UINTN LastRow\r
+  IN UINTN  Row,\r
+  IN UINTN  LastCol,\r
+  IN UINTN  LastRow\r
   )\r
 {\r
-  CHAR16 Line[200];\r
+  UINTN   Col;\r
+  CHAR16  Line[200];\r
 \r
   if (Row == 0) {\r
     Row = 1;\r
@@ -432,22 +160,28 @@ EditorClearLine (
 \r
   //\r
   // prepare a blank line\r
+  // If max column is larger, split to multiple prints.\r
   //\r
-  SetMem16(Line, LastCol*sizeof(CHAR16), L' ');\r
+  SetMem16 (Line, sizeof (Line), L' ');\r
+  Line[ARRAY_SIZE (Line) - 1] = CHAR_NULL;\r
+\r
+  for (Col = 1; Col <= LastCol; Col += ARRAY_SIZE (Line) - 1) {\r
+    if (Col + ARRAY_SIZE (Line) - 1 > LastCol) {\r
+      if (Row == LastRow) {\r
+        //\r
+        // if CHAR_NULL is still at position LastCol, it will cause first line error\r
+        //\r
+        Line[(LastCol - 1) % (ARRAY_SIZE (Line) - 1)] = CHAR_NULL;\r
+      } else {\r
+        Line[LastCol % (ARRAY_SIZE (Line) - 1)] = CHAR_NULL;\r
+      }\r
+    }\r
 \r
-  if (Row == LastRow) {\r
     //\r
-    // if CHAR_NULL is still at position 80, it will cause first line error\r
+    // print out the blank line\r
     //\r
-    Line[LastCol - 1] = CHAR_NULL;\r
-  } else {\r
-    Line[LastCol] = CHAR_NULL;\r
+    ShellPrintEx ((INT32)Col - 1, (INT32)Row - 1, Line);\r
   }\r
-\r
-  //\r
-  // print out the blank line\r
-  //\r
-  ShellPrintEx (0, ((INT32)Row) - 1, Line);\r
 }\r
 \r
 /**\r
@@ -459,15 +193,14 @@ EditorClearLine (
   @retval FALSE     The character is not valid.\r
 **/\r
 BOOLEAN\r
-EFIAPI\r
 IsValidFileNameChar (\r
-  IN CONST CHAR16 Ch\r
+  IN CONST CHAR16  Ch\r
   )\r
 {\r
   //\r
   // See if there are any illegal characters within the name\r
   //\r
-  if (Ch < 0x20 || Ch == L'\"' || Ch == L'*' || Ch == L'/' || Ch == L'<' || Ch == L'>' || Ch == L'?' || Ch == L'|' || Ch == L' ') {\r
+  if ((Ch < 0x20) || (Ch == L'\"') || (Ch == L'*') || (Ch == L'/') || (Ch == L'<') || (Ch == L'>') || (Ch == L'?') || (Ch == L'|')) {\r
     return FALSE;\r
   }\r
 \r
@@ -476,34 +209,33 @@ IsValidFileNameChar (
 \r
 /**\r
   Check if file name has illegal characters.\r
-  \r
+\r
   @param Name       The filename to check.\r
 \r
   @retval TRUE      The filename is ok.\r
   @retval FALSE     The filename is not ok.\r
 **/\r
 BOOLEAN\r
-EFIAPI\r
 IsValidFileName (\r
-  IN CONST CHAR16 *Name\r
+  IN CONST CHAR16  *Name\r
   )\r
 {\r
-\r
-  UINTN Index;\r
-  UINTN Len;\r
+  UINTN  Index;\r
+  UINTN  Len;\r
 \r
   //\r
   // check the length of Name\r
   //\r
   for (Len = 0, Index = StrLen (Name) - 1; Index + 1 != 0; Index--, Len++) {\r
-    if (Name[Index] == '\\' || Name[Index] == ':') {\r
+    if ((Name[Index] == '\\') || (Name[Index] == ':')) {\r
       break;\r
     }\r
   }\r
 \r
-  if (Len == 0 || Len > 255) {\r
+  if ((Len == 0) || (Len > 255)) {\r
     return FALSE;\r
   }\r
+\r
   //\r
   // check whether any char in Name not appears in valid file name char\r
   //\r
@@ -525,18 +257,15 @@ IsValidFileName (
   @return the valid filename.\r
 **/\r
 CHAR16 *\r
-EFIAPI\r
 EditGetDefaultFileName (\r
-  IN CONST CHAR16 *Extension\r
+  IN CONST CHAR16  *Extension\r
   )\r
 {\r
-  EFI_STATUS         Status;\r
-  UINTN              Suffix;\r
-  BOOLEAN            FoundNewFile;\r
-  CHAR16             *FileNameTmp;\r
+  EFI_STATUS  Status;\r
+  UINTN       Suffix;\r
+  CHAR16      *FileNameTmp;\r
 \r
-  Suffix       = 0;\r
-  FoundNewFile = FALSE;\r
+  Suffix = 0;\r
 \r
   do {\r
     FileNameTmp = CatSPrint (NULL, L"NewFile%d.%s", Suffix, Extension);\r
@@ -560,18 +289,18 @@ EditGetDefaultFileName (
 }\r
 \r
 /**\r
-  Read a file into an allocated buffer.  The buffer is the responsibility \r
+  Read a file into an allocated buffer.  The buffer is the responsibility\r
   of the caller to free.\r
 \r
   @param[in]  FileName          The filename of the file to open.\r
-  @param[out] Buffer            Upon successful return, the pointer to the \r
-                                address of the allocated buffer.                                  \r
+  @param[out] Buffer            Upon successful return, the pointer to the\r
+                                address of the allocated buffer.\r
   @param[out] BufferSize        If not NULL, then the pointer to the size\r
                                 of the allocated buffer.\r
   @param[out] ReadOnly          Upon successful return TRUE if the file is\r
                                 read only.  FALSE otherwise.\r
 \r
-  @retval EFI_NOT_FOUND         The filename did not represent a file in the \r
+  @retval EFI_NOT_FOUND         The filename did not represent a file in the\r
                                 file system.\r
   @retval EFI_SUCCESS           The file was read into the buffer.\r
   @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.\r
@@ -581,29 +310,28 @@ EditGetDefaultFileName (
   @retval EFI_INVALID_PARAMETER FileName was a directory.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 ReadFileIntoBuffer (\r
-  IN CONST CHAR16 *FileName,\r
-  OUT VOID        **Buffer,\r
-  OUT UINTN       *BufferSize OPTIONAL,\r
-  OUT BOOLEAN     *ReadOnly\r
+  IN CONST CHAR16  *FileName,\r
+  OUT VOID         **Buffer,\r
+  OUT UINTN        *BufferSize OPTIONAL,\r
+  OUT BOOLEAN      *ReadOnly\r
   )\r
 {\r
-  VOID              *InternalBuffer;\r
-  UINTN             FileSize;\r
-  SHELL_FILE_HANDLE FileHandle;\r
-  BOOLEAN           CreateFile;\r
-  EFI_STATUS        Status;\r
-  EFI_FILE_INFO     *Info;\r
-\r
-  InternalBuffer  = NULL;\r
-  FileSize        = 0;\r
-  FileHandle      = NULL;\r
-  CreateFile      = FALSE;\r
-  Status          = EFI_SUCCESS;\r
-  Info            = NULL;\r
-\r
-  if (FileName == NULL || Buffer == NULL || ReadOnly == NULL) {\r
+  VOID               *InternalBuffer;\r
+  UINTN              FileSize;\r
+  SHELL_FILE_HANDLE  FileHandle;\r
+  BOOLEAN            CreateFile;\r
+  EFI_STATUS         Status;\r
+  EFI_FILE_INFO      *Info;\r
+\r
+  InternalBuffer = NULL;\r
+  FileSize       = 0;\r
+  FileHandle     = NULL;\r
+  CreateFile     = FALSE;\r
+  Status         = EFI_SUCCESS;\r
+  Info           = NULL;\r
+\r
+  if ((FileName == NULL) || (Buffer == NULL) || (ReadOnly == NULL)) {\r
     return (EFI_INVALID_PARAMETER);\r
   }\r
 \r
@@ -612,14 +340,14 @@ ReadFileIntoBuffer (
   //\r
   Status = ShellOpenFileByName (FileName, &FileHandle, EFI_FILE_MODE_READ, 0);\r
 \r
-  if (!EFI_ERROR(Status)) {\r
-    ASSERT(CreateFile == FALSE);\r
+  if (!EFI_ERROR (Status)) {\r
+    ASSERT (CreateFile == FALSE);\r
     if (FileHandle == NULL) {\r
       return EFI_LOAD_ERROR;\r
     }\r
 \r
-    Info = ShellGetFileInfo(FileHandle);\r
-    \r
+    Info = ShellGetFileInfo (FileHandle);\r
+\r
     if (Info->Attribute & EFI_FILE_DIRECTORY) {\r
       FreePool (Info);\r
       return EFI_INVALID_PARAMETER;\r
@@ -630,10 +358,11 @@ ReadFileIntoBuffer (
     } else {\r
       *ReadOnly = FALSE;\r
     }\r
+\r
     //\r
     // get file size\r
     //\r
-    FileSize = (UINTN) Info->FileSize;\r
+    FileSize = (UINTN)Info->FileSize;\r
 \r
     FreePool (Info);\r
   } else if (Status == EFI_NOT_FOUND) {\r
@@ -651,10 +380,12 @@ ReadFileIntoBuffer (
       if (Status == EFI_WARN_DELETE_FAILURE) {\r
         Status = EFI_ACCESS_DENIED;\r
       }\r
+\r
       if (EFI_ERROR (Status)) {\r
         return Status;\r
       }\r
     }\r
+\r
     //\r
     // file doesn't exist, so set CreateFile to TRUE and can't be read-only\r
     //\r
@@ -673,21 +404,23 @@ ReadFileIntoBuffer (
     if (InternalBuffer == NULL) {\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
+\r
     //\r
     // read file into InternalBuffer\r
     //\r
     Status = ShellReadFile (FileHandle, &FileSize, InternalBuffer);\r
-    ShellCloseFile(&FileHandle);\r
+    ShellCloseFile (&FileHandle);\r
     FileHandle = NULL;\r
     if (EFI_ERROR (Status)) {\r
       SHELL_FREE_NON_NULL (InternalBuffer);\r
       return EFI_LOAD_ERROR;\r
     }\r
   }\r
+\r
   *Buffer = InternalBuffer;\r
   if (BufferSize != NULL) {\r
     *BufferSize = FileSize;\r
   }\r
-  return (EFI_SUCCESS);\r
 \r
+  return (EFI_SUCCESS);\r
 }\r