+++ /dev/null
-#/** @file\r
-# This package build validate file is used to generate the shell binaries in this package.\r
-# It depends on EdkCompatibilityPkg, Edk Shell source packge & BaseTools package. \r
-#\r
-# Copyright (c) 2008. Intel Corporation\r
-#\r
-# All rights reserved. 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
-#\r
-#**/\r
-\r
-[Defines]\r
- PLATFORM_NAME = EdkShellPkg\r
- PLATFORM_GUID = 761BEE8B-58E3-4014-B8F5-0214A8DFA7EE\r
- PLATFORM_VERSION = 1.04\r
- DSC_SPECIFICATION = 0x00010005\r
- OUTPUT_DIRECTORY = Build/EdkShellPkg\r
- SUPPORTED_ARCHITECTURES = IA32|IPF|X64\r
- BUILD_TARGETS = DEBUG|RELEASE\r
- SKUID_IDENTIFIER = DEFAULT\r
-\r
-[Libraries]\r
- #\r
- # Libraries common to PEI and DXE\r
- #\r
- EdkCompatibilityPkg/Foundation/Efi/Guid/EfiGuidLib.inf\r
- EdkCompatibilityPkg/Foundation/Framework/Guid/EdkFrameworkGuidLib.inf\r
- EdkCompatibilityPkg/Foundation/Guid/EdkGuidLib.inf\r
- EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/EfiCommonLib.inf\r
- EdkCompatibilityPkg/Foundation/Cpu/Pentium/CpuIA32Lib/CpuIA32Lib.inf\r
- EdkCompatibilityPkg/Foundation/Cpu/Itanium/CpuIA64Lib/CpuIA64Lib.inf\r
- EdkCompatibilityPkg/Foundation/Library/CompilerStub/CompilerStubLib.inf\r
- EdkCompatibilityPkg/Foundation/Library/CustomizedDecompress/CustomizedDecompress.inf\r
- EdkCompatibilityPkg/Foundation/Library/Dxe/Hob/HobLib.inf\r
- #\r
- # PEI libraries\r
- #\r
- EdkCompatibilityPkg/Foundation/Framework/Ppi/EdkFrameworkPpiLib.inf\r
- EdkCompatibilityPkg/Foundation/Ppi/EdkPpiLib.inf\r
- EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/PeiLib.inf\r
- EdkCompatibilityPkg/Foundation/Library/Pei/Hob/PeiHobLib.inf\r
- #\r
- # DXE libraries\r
- #\r
- EdkCompatibilityPkg/Foundation/Core/Dxe/ArchProtocol/ArchProtocolLib.inf\r
- EdkCompatibilityPkg/Foundation/Efi/Protocol/EfiProtocolLib.inf\r
- EdkCompatibilityPkg/Foundation/Framework/Protocol/EdkFrameworkProtocolLib.inf\r
- EdkCompatibilityPkg/Foundation/Protocol/EdkProtocolLib.inf\r
- EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/EfiDriverLib.inf\r
- EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/EfiRuntimeLib.inf\r
- EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Graphics.inf\r
- EdkCompatibilityPkg/Foundation/Library/Dxe/EfiIfrSupportLib/EfiIfrSupportLib.inf\r
- EdkCompatibilityPkg/Foundation/Library/Dxe/UefiEfiIfrSupportLib/UefiEfiIfrSupportLib.inf \r
- EdkCompatibilityPkg/Foundation/Library/Dxe/Print/PrintLib.inf\r
- EdkCompatibilityPkg/Foundation/Library/Dxe/EfiScriptLib/EfiScriptLib.inf\r
- EdkCompatibilityPkg/Foundation/Library/Dxe/EfiUiLib/EfiUiLib.inf\r
- #\r
- # Print/Graphics Library consume SetupBrowser Print Protocol\r
- #\r
- EdkCompatibilityPkg/Foundation/Library/Dxe/PrintLite/PrintLib.inf\r
- EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Graphics.inf\r
- #\r
- # Shell Library\r
- #\r
- EdkCompatibilityPkg/Shell/Library/EfiShellLib.inf\r
-\r
-\r
-[Components]\r
- #\r
- # Shell.inf & ShellFull.inf can not be included at once to avoid over\r
- #\r
- EdkCompatibilityPkg/Shell/Shell.inf\r
- EdkCompatibilityPkg/Shell/ShellFull.inf\r
- EdkCompatibilityPkg/Shell/attrib/attrib.inf\r
- EdkCompatibilityPkg/Shell/cls/cls.inf\r
- EdkCompatibilityPkg/Shell/comp/comp.inf\r
- EdkCompatibilityPkg/Shell/cp/cp.inf\r
- EdkCompatibilityPkg/Shell/date/date.inf\r
- EdkCompatibilityPkg/Shell/dblk/dblk.inf\r
- EdkCompatibilityPkg/Shell/devices/devices.inf\r
- EdkCompatibilityPkg/Shell/DeviceTree/devicetree.inf\r
- EdkCompatibilityPkg/Shell/dmem/dmem.inf\r
- EdkCompatibilityPkg/Shell/dmpstore/dmpstore.inf\r
- EdkCompatibilityPkg/Shell/drivers/drivers.inf\r
- EdkCompatibilityPkg/Shell/drvcfg/drvcfg.inf\r
- EdkCompatibilityPkg/Shell/drvdiag/drvdiag.inf\r
- EdkCompatibilityPkg/Shell/edit/edit.inf\r
- EdkCompatibilityPkg/Shell/EfiCompress/compress.inf\r
- EdkCompatibilityPkg/Shell/EfiDecompress/Decompress.inf\r
- EdkCompatibilityPkg/Shell/err/err.inf\r
- EdkCompatibilityPkg/Shell/guid/guid.inf\r
- EdkCompatibilityPkg/Shell/hexedit/hexedit.inf\r
- EdkCompatibilityPkg/Shell/IfConfig/IfConfig.inf\r
- EdkCompatibilityPkg/Shell/IpConfig/IpConfig.inf\r
- EdkCompatibilityPkg/Shell/load/load.inf\r
- EdkCompatibilityPkg/Shell/LoadPciRom/LoadPciRom.inf\r
- EdkCompatibilityPkg/Shell/ls/ls.inf\r
- EdkCompatibilityPkg/Shell/mem/mem.inf\r
- EdkCompatibilityPkg/Shell/memmap/memmap.inf\r
- EdkCompatibilityPkg/Shell/mkdir/mkdir.inf\r
- EdkCompatibilityPkg/Shell/mm/mm.inf\r
- EdkCompatibilityPkg/Shell/mode/mode.inf\r
- EdkCompatibilityPkg/Shell/mount/mount.inf\r
- EdkCompatibilityPkg/Shell/mv/mv.inf\r
- EdkCompatibilityPkg/Shell/newshell/nshell.inf\r
- EdkCompatibilityPkg/Shell/openinfo/openinfo.inf\r
- EdkCompatibilityPkg/Shell/pci/pci.inf\r
- EdkCompatibilityPkg/Shell/Ping/Ping.inf\r
- EdkCompatibilityPkg/Shell/reset/reset.inf\r
- EdkCompatibilityPkg/Shell/rm/rm.inf\r
- EdkCompatibilityPkg/Shell/sermode/sermode.inf\r
- EdkCompatibilityPkg/Shell/SmbiosView/Smbiosview.inf\r
- EdkCompatibilityPkg/Shell/stall/stall.inf\r
- EdkCompatibilityPkg/Shell/TelnetMgmt/TelnetMgmt.inf\r
- EdkCompatibilityPkg/Shell/time/time.inf\r
- EdkCompatibilityPkg/Shell/touch/touch.inf\r
- EdkCompatibilityPkg/Shell/type/type.inf\r
- EdkCompatibilityPkg/Shell/tzone/timezone.inf\r
- EdkCompatibilityPkg/Shell/unload/unload.inf\r
- EdkCompatibilityPkg/Shell/ver/Ver.inf\r
- EdkCompatibilityPkg/Shell/vol/Vol.inf\r
-\r
-[BuildOptions]\r
- *_*_IA32_CC_FLAGS = /D EFI_SPECIFICATION_VERSION=0x0002000A /D PI_SPECIFICATION_VERSION=0x00010000 /D TIANO_RELEASE_VERSION=0x00080006 /D EFI32\r
- *_*_IA32_ASM_FLAGS = /DEFI32\r
- *_*_IA32_VFRPP_FLAGS = /D EFI_SPECIFICATION_VERSION=0x0002000A /D PI_SPECIFICATION_VERSION=0x00010000 /D TIANO_RELEASE_VERSION=0x00080006 /D EFI32\r
- *_*_IA32_APP_FLAGS = /D EFI_SPECIFICATION_VERSION=0x0002000A /D PI_SPECIFICATION_VERSION=0x00010000 /D TIANO_RELEASE_VERSION=0x00080006 /D EFI32\r
- *_*_IA32_PP_FLAGS = /D EFI_SPECIFICATION_VERSION=0x0002000A /D PI_SPECIFICATION_VERSION=0x00010000 /D TIANO_RELEASE_VERSION=0x00080006 /D EFI32\r
-\r
- *_*_X64_CC_FLAGS = /D EFI_SPECIFICATION_VERSION=0x0002000A /D PI_SPECIFICATION_VERSION=0x00010000 /D TIANO_RELEASE_VERSION=0x00080006 /D EFIX64\r
- *_*_X64_ASM_FLAGS = /DEFIX64\r
- *_*_X64_VFRPP_FLAGS = /D EFI_SPECIFICATION_VERSION=0x0002000A /D PI_SPECIFICATION_VERSION=0x00010000 /D TIANO_RELEASE_VERSION=0x00080006 /D EFIX64\r
- *_*_X64_APP_FLAGS = /D EFI_SPECIFICATION_VERSION=0x0002000A /D PI_SPECIFICATION_VERSION=0x00010000 /D TIANO_RELEASE_VERSION=0x00080006 /D EFIX64\r
- *_*_X64_PP_FLAGS = /D EFI_SPECIFICATION_VERSION=0x0002000A /D PI_SPECIFICATION_VERSION=0x00010000 /D TIANO_RELEASE_VERSION=0x00080006 /D EFIX64\r
-\r
- *_*_IPF_CC_FLAGS = /D EFI_SPECIFICATION_VERSION=0x0002000A /D PI_SPECIFICATION_VERSION=0x00010000 /D TIANO_RELEASE_VERSION=0x00080006 /D EFI64\r
- *_*_IPF_ASM_FLAGS = \r
- *_*_IPF_VFRPP_FLAGS = /D EFI_SPECIFICATION_VERSION=0x0002000A /D PI_SPECIFICATION_VERSION=0x00010000 /D TIANO_RELEASE_VERSION=0x00080006 /D EFI64\r
- *_*_IPF_APP_FLAGS = /D EFI_SPECIFICATION_VERSION=0x0002000A /D PI_SPECIFICATION_VERSION=0x00010000 /D TIANO_RELEASE_VERSION=0x00080006 /D EFI64\r
- *_*_IPF_PP_FLAGS = /D EFI_SPECIFICATION_VERSION=0x0002000A /D PI_SPECIFICATION_VERSION=0x00010000 /D TIANO_RELEASE_VERSION=0x00080006 /D EFI64\r
-\r
+++ /dev/null
-diff -urN --binary -a -x CVS Oldv1.5/Application/Shell/Library/EfiShellLib.h Newv1.5/Application/Shell/Library/EfiShellLib.h
---- Oldv1.5/Application/Shell/Library/EfiShellLib.h 2008-06-10 13:46:56.000000000 +0800
-+++ Newv1.5/Application/Shell/Library/EfiShellLib.h 2008-07-09 11:45:28.026417300 +0800
-@@ -174,22 +174,23 @@
- //\r
- // Environment variable name constants\r
- //\r
--#define VarLanguageCodes L"LangCodes"\r
--#define VarLanguage L"Lang"\r
--#define VarTimeout L"Timeout"\r
--#define VarConsoleIn L"ConIn"\r
--#define VarConsoleOut L"ConOut"\r
--#define VarErrorOut L"ErrOut"\r
--#define VarBootOption L"Boot%04x"\r
--#define VarBootOrder L"BootOrder"\r
--#define VarBootNext L"BootNext"\r
--#define VarBootCurrent L"BootCurrent"\r
--#define VarDriverOption L"Driver%04x"\r
--#define VarDriverOrder L"DriverOrder"\r
--#define VarConsoleInpDev L"ConInDev"\r
--#define VarConsoleOutDev L"ConOutDev"\r
--#define VarErrorOutDev L"ErrOutDev"\r
--#define LanguageCodeEnglish "eng"\r
-+#define VarLanguageCodes L"LangCodes"\r
-+#define VarLanguage L"Lang"\r
-+#define VarTimeout L"Timeout"\r
-+#define VarConsoleIn L"ConIn"\r
-+#define VarConsoleOut L"ConOut"\r
-+#define VarErrorOut L"ErrOut"\r
-+#define VarBootOption L"Boot%04x"\r
-+#define VarBootOrder L"BootOrder"\r
-+#define VarBootNext L"BootNext"\r
-+#define VarBootCurrent L"BootCurrent"\r
-+#define VarDriverOption L"Driver%04x"\r
-+#define VarDriverOrder L"DriverOrder"\r
-+#define VarConsoleInpDev L"ConInDev"\r
-+#define VarConsoleOutDev L"ConOutDev"\r
-+#define VarErrorOutDev L"ErrOutDev"\r
-+#define LanguageCodeEnglish "eng"\r
-+#define PlatformLanguageCodeEnglish "en-US"\r
- \r
- #define ISO_639_2_ENTRY_SIZE 3\r
- #define RFC_3066_ENTRY_SIZE 12\r
-@@ -333,4 +334,10 @@
- IN CHAR8 *LangCode\r
- );\r
- \r
-+CHAR8 *\r
-+ExtractSupportedLanguage (\r
-+ IN CONST CHAR8 *SupportedLanguages,\r
-+ IN CONST CHAR8 *Language\r
-+ );\r
-+\r
- #endif\r
-diff -urN --binary -a -x CVS Oldv1.5/Application/Shell/Library/Misc.c Newv1.5/Application/Shell/Library/Misc.c
---- Oldv1.5/Application/Shell/Library/Misc.c 2008-06-10 13:46:56.000000000 +0800
-+++ Newv1.5/Application/Shell/Library/Misc.c 2008-07-09 11:45:28.088917700 +0800
-@@ -2271,3 +2271,76 @@
- }\r
- return Lang;\r
- }\r
-+\r
-+CHAR8 *\r
-+ExtractSupportedLanguage (\r
-+ IN CONST CHAR8 *SupportedLanguages,\r
-+ IN CONST CHAR8 *Language\r
-+ )\r
-+/*++\r
-+\r
-+ Routine Description:\r
-+\r
-+ This function matches the major language code (first two characters) in the\r
-+ SupportedLanguages. The first language code in the SupportedLanguages that\r
-+ matches first two characters of the input Language is returned. If there is no\r
-+ such match, then NULL is returned.\r
-+\r
-+ Arguments:\r
-+\r
-+ SupportedLanguages - A Null-terminated ASCII string that contains one\r
-+ or more supported language codes. \r
-+\r
-+ LangCode - A pointer to a Null-terminated ASCII string\r
-+ array indicating the RFC 3066 language.\r
-+\r
-+ Returns:\r
-+\r
-+ The RFC3066 language code that matches the major language. \r
-+\r
-+--*/\r
-+{\r
-+ CONST CHAR8 *CurrentLanguage;\r
-+ CHAR8 *SupportedLanguage;\r
-+ UINTN LanguageLen;\r
-+\r
-+ CurrentLanguage = SupportedLanguages;\r
-+\r
-+ while (CurrentLanguage != '\0') {\r
-+ //\r
-+ // Search till the end of current language.\r
-+ // \r
-+ LanguageLen = 0;\r
-+ while (CurrentLanguage[LanguageLen] != ';' && CurrentLanguage[LanguageLen] != '\0') {\r
-+ LanguageLen++;\r
-+ }\r
-+\r
-+ //\r
-+ // should use AsciiStrnCmp(CurrentLanguage, Language, 2) == 0\r
-+ // \r
-+ if ((CurrentLanguage[0] == Language[0]) && (CurrentLanguage[1] == Language[1])) {\r
-+ //\r
-+ // Match the major language code, then return a new copy of\r
-+ // NULL-terminated SupportedLanguage.\r
-+ //\r
-+ SupportedLanguage = AllocatePool (LanguageLen + 1);\r
-+ CopyMem (SupportedLanguage, (VOID *) CurrentLanguage, LanguageLen);\r
-+\r
-+ SupportedLanguage[LanguageLen] = '\0';\r
-+\r
-+ return SupportedLanguage;\r
-+ }\r
-+ //\r
-+ // Make CurrentLangue point to the next candiate language code.\r
-+ // \r
-+ CurrentLanguage += LanguageLen;\r
-+ if (*CurrentLanguage == ';') {\r
-+ CurrentLanguage++;\r
-+ }\r
-+ }\r
-+\r
-+ return NULL;\r
-+}\r
-+\r
-+\r
-+\r
-diff -urN --binary -a -x CVS Oldv1.5/Application/Shell/SmbiosView/PrintInfo.c Newv1.5/Application/Shell/SmbiosView/PrintInfo.c
---- Oldv1.5/Application/Shell/SmbiosView/PrintInfo.c 2007-11-26 14:01:00.000000000 +0800
-+++ Newv1.5/Application/Shell/SmbiosView/PrintInfo.c 2008-07-09 12:36:07.646190700 +0800
-@@ -1779,7 +1779,7 @@
- //\r
- // MaxSize is determined by follow formula\r
- //\r
-- MaxSize = 1 << Size;\r
-+ MaxSize = (UINTN) 1 << Size;\r
- PrintToken (STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_VAR_MB), HiiHandle, MaxSize);\r
- \r
- if (Option >= SHOW_DETAIL) {\r
-diff -urN --binary -a -x CVS Oldv1.5/Application/Shell/SmbiosView/Smbios.h Newv1.5/Application/Shell/SmbiosView/Smbios.h
---- Oldv1.5/Application/Shell/SmbiosView/Smbios.h 2006-03-07 16:20:46.000000000 +0800
-+++ Newv1.5/Application/Shell/SmbiosView/Smbios.h 2008-07-09 10:29:41.548254500 +0800
-@@ -34,11 +34,6 @@
- \r
- extern EFI_HII_HANDLE HiiHandle;\r
- \r
--#define EFI_SMBIOS_TABLE_GUID \\r
-- { \\r
-- 0xeb9d2d31, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d \\r
-- }\r
- \r
--extern EFI_GUID gEfiSmbiosTableGuid;\r
- \r
- #endif\r
-diff -urN --binary -a -x CVS Oldv1.5/Application/Shell/drivers/drivers.c Newv1.5/Application/Shell/drivers/drivers.c
---- Oldv1.5/Application/Shell/drivers/drivers.c 2008-05-26 13:22:52.000000000 +0800
-+++ Newv1.5/Application/Shell/drivers/drivers.c 2008-07-09 12:36:16.552668700 +0800
-@@ -130,6 +130,7 @@
- UINTN StringIndex;\r
- UINTN Index;\r
- CHAR8 *Language;\r
-+ CHAR8 *PlatformLanguage;\r
- UINTN DriverImageHandleCount;\r
- EFI_HANDLE *DriverImageHandleBuffer;\r
- UINTN HandleIndex;\r
-@@ -152,6 +153,7 @@
- SHELL_VAR_CHECK_PACKAGE ChkPck;\r
- \r
- Language = NULL;\r
-+ PlatformLanguage = NULL;\r
- DriverImageHandleCount = 0;\r
- DriverImageHandleBuffer = NULL;\r
- IsHelp = FALSE;\r
-@@ -241,7 +243,7 @@
- goto Done;\r
- }\r
- \r
-- Language = LibGetVariableLang ();\r
-+ Language = LibGetVariable (L"Lang", &gEfiGlobalVariableGuid);\r
- if (Language == NULL) {\r
- Language = (CHAR8 *)AllocateZeroPool(strlena(LanguageCodeEnglish) + 1);\r
- if (Language == NULL) {\r
-@@ -250,6 +252,15 @@
- strcpya(Language, LanguageCodeEnglish);\r
- }\r
- \r
-+ PlatformLanguage = LibGetVariable (L"PlatformLang", &gEfiGlobalVariableGuid);\r
-+ if (PlatformLanguage == NULL) {\r
-+ PlatformLanguage = (CHAR8 *)AllocateZeroPool(strlena(PlatformLanguageCodeEnglish) + 1);\r
-+ if (PlatformLanguage == NULL) {\r
-+ return EFI_OUT_OF_RESOURCES;\r
-+ }\r
-+ strcpya(PlatformLanguage, PlatformLanguageCodeEnglish);\r
-+ }\r
-+\r
- Item = LibCheckVarGetFlag (&ChkPck, L"-l");\r
- if (Item) {\r
- if (Language != NULL) {\r
-@@ -314,14 +325,6 @@
- EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
- );\r
- \r
-- ComponentName = NULL;\r
-- ComponentName2 = NULL;\r
-- Status = LibGetComponentNameProtocol (\r
-- DriverImageHandleBuffer[Index],\r
-- &ComponentName,\r
-- &ComponentName2\r
-- );\r
--\r
- DiagnosticsStatus = BS->OpenProtocol (\r
- DriverImageHandleBuffer[Index],\r
- &gEfiDriverDiagnostics2ProtocolGuid,\r
-@@ -418,37 +421,73 @@
- } else {\r
- PrintToken (STRING_TOKEN (STR_SHELLENV_PROTID_ONE_VAR_D), HiiHandle, NumberOfChildren);\r
- }\r
--\r
-- Status = EFI_SUCCESS;\r
-+ \r
- DriverName = L"<UNKNOWN>";\r
-- SupportedLanguage = NULL;\r
-- if (ComponentName != NULL) {\r
-- if (ComponentName->GetDriverName != NULL) {\r
-- SupportedLanguage = LibConvertSupportedLanguage (ComponentName->SupportedLanguages, Language);\r
-+ Status = BS->OpenProtocol (\r
-+ DriverImageHandleBuffer[Index],\r
-+ &gEfiComponentName2ProtocolGuid,\r
-+ (VOID **) &ComponentName2,\r
-+ NULL,\r
-+ NULL,\r
-+ EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-+ );\r
-+ if (!EFI_ERROR (Status)) {\r
-+ //\r
-+ // Driver has Component Name 2 Protocol is available, we get the\r
-+ // driver name var RFC 3066 language code\r
-+ // \r
-+ Status = ComponentName2->GetDriverName (\r
-+ ComponentName2,\r
-+ PlatformLanguage,\r
-+ &DriverName\r
-+ );\r
-+ if (EFI_ERROR (Status)) {\r
-+ //\r
-+ // Current RFC3066 language code fails, we then extract the supported\r
-+ // language from Component Name 2 protocol interface.\r
-+ // \r
-+ SupportedLanguage = ExtractSupportedLanguage(ComponentName2->SupportedLanguages, Language);\r
-+ if (SupportedLanguage != NULL) {\r
-+ Status = ComponentName2->GetDriverName (\r
-+ ComponentName2,\r
-+ SupportedLanguage,\r
-+ &DriverName\r
-+ );\r
-+ FreePool(SupportedLanguage);\r
-+ }\r
-+ }\r
-+ }\r
-+ if (EFI_ERROR (Status)) {\r
-+ //\r
-+ // In case Component Name 2 protocol is not available or some error occurs\r
-+ // when getting driver name from Component Name 2 protocol, we get driver\r
-+ // name from Component Name protocol.\r
-+ // \r
-+ Status = BS->OpenProtocol (\r
-+ DriverImageHandleBuffer[Index],\r
-+ &gEfiComponentNameProtocolGuid,\r
-+ (VOID **) &ComponentName,\r
-+ NULL,\r
-+ NULL,\r
-+ EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-+ );\r
-+ if (!EFI_ERROR (Status)) {\r
- Status = ComponentName->GetDriverName (\r
- ComponentName,\r
-- SupportedLanguage,\r
-+ Language,\r
- &DriverName\r
- );\r
- }\r
-- } else if (ComponentName2 != NULL) {\r
-- if (ComponentName2->GetDriverName != NULL) {\r
-- SupportedLanguage = LibConvertSupportedLanguage (ComponentName2->SupportedLanguages, Language);\r
-- Status = ComponentName2->GetDriverName (\r
-- ComponentName2,\r
-- SupportedLanguage,\r
-- &DriverName\r
-- );\r
-- }\r
- }\r
-- if (SupportedLanguage != NULL) {\r
-- FreePool (SupportedLanguage);\r
-- }\r
--\r
- if (EFI_ERROR (Status)) {\r
-+ //\r
-+ // Fails to get driver name from either Component Name 2 & Component Name\r
-+ // Protocol, we show "<UNKNOWN>" string as driver name.\r
-+ // \r
- DriverName = L"<UNKNOWN>";\r
- }\r
- \r
-+ \r
- for (StringIndex = 0; StringIndex < StrLen (DriverName) && StringIndex < 35; StringIndex++) {\r
- FormattedDriverName[StringIndex] = DriverName[StringIndex];\r
- }\r
-@@ -491,6 +530,10 @@
- FreePool (Language);\r
- }\r
- \r
-+ if (PlatformLanguage != NULL) {\r
-+ FreePool (PlatformLanguage);\r
-+ }\r
-+\r
- ShellCloseHandleEnumerator ();\r
- LibCheckVarFreeVarList (&ChkPck);\r
- LibUnInitializeStrings ();\r