summaryrefslogtreecommitdiff
path: root/IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.c
diff options
context:
space:
mode:
authorklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>2009-07-16 06:54:41 +0000
committerklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>2009-07-16 06:54:41 +0000
commit5caec787e13503450030036e3cc725e87a031ac8 (patch)
treef63bb27e78e3780e80d0efc86800f7304fd69ede /IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.c
parente6d4b9d5a311df9e65afba3f92cd203475589397 (diff)
downloadedk2-platforms-5caec787e13503450030036e3cc725e87a031ac8.tar.xz
Fix bug that some boot option can *not* be displayed correct in boot manager and boot maintain manager.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8956 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.c')
-rw-r--r--IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.c48
1 files changed, 30 insertions, 18 deletions
diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.c b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.c
index af54de6926..fcf6c7bb36 100644
--- a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.c
+++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.c
@@ -201,6 +201,7 @@ CallBootManager (
VOID *EndOpCodeHandle;
EFI_IFR_GUID_LABEL *StartLabel;
EFI_IFR_GUID_LABEL *EndLabel;
+ CHAR16 *HiiString;
CHAR16 *BootStringNumber;
UINTN DevicePathType;
@@ -271,48 +272,59 @@ CallBootManager (
BootStringNumber = NULL;
DevicePathType = BdsGetBootTypeFromDevicePath (Option->DevicePath);
-
+
//
// store number string of boot option temporary.
//
-
+ HiiString = NULL;
switch (DevicePathType) {
case BDS_EFI_ACPI_FLOPPY_BOOT:
- BootStringNumber = Option->Description;
- Option->Description = GetStringById (STRING_TOKEN (STR_DESCRIPTION_FLOPPY));
+ HiiString = GetStringById (STRING_TOKEN (STR_DESCRIPTION_FLOPPY));
break;
case BDS_EFI_MEDIA_CDROM_BOOT:
- BootStringNumber = Option->Description;
- Option->Description = GetStringById (STRING_TOKEN (STR_DESCRIPTION_DVD));
+ case BDS_EFI_MESSAGE_SATA_BOOT:
+ case BDS_EFI_MESSAGE_ATAPI_BOOT:
+ HiiString = GetStringById (STRING_TOKEN (STR_DESCRIPTION_DVD));
break;
case BDS_EFI_MESSAGE_USB_DEVICE_BOOT:
- BootStringNumber = Option->Description;
- Option->Description = GetStringById (STRING_TOKEN (STR_DESCRIPTION_USB));
+ HiiString = GetStringById (STRING_TOKEN (STR_DESCRIPTION_USB));
break;
case BDS_EFI_MESSAGE_SCSI_BOOT:
- BootStringNumber = Option->Description;
- Option->Description = GetStringById (STRING_TOKEN (STR_DESCRIPTION_SCSI));
+ HiiString = GetStringById (STRING_TOKEN (STR_DESCRIPTION_SCSI));
break;
case BDS_EFI_MESSAGE_MISC_BOOT:
- BootStringNumber = Option->Description;
- Option->Description = GetStringById (STRING_TOKEN (STR_DESCRIPTION_MISC));
+ HiiString = GetStringById (STRING_TOKEN (STR_DESCRIPTION_MISC));
break;
case BDS_EFI_MESSAGE_MAC_BOOT:
- BootStringNumber = Option->Description;
- Option->Description = GetStringById (STRING_TOKEN (STR_DESCRIPTION_NETWORK));
+ HiiString = GetStringById (STRING_TOKEN (STR_DESCRIPTION_NETWORK));
break;
+ case BBS_DEVICE_PATH:
+ //
+ // Do nothing for legacy boot option.
+ //
+ break;
+ default:
+ DEBUG((EFI_D_INFO, "Can not find HiiString for given device path type 0x%x\n", DevicePathType));
}
-
- ASSERT (Option->Description != NULL);
- if (BootStringNumber != NULL) {
+
+ //
+ // If found Hii description string then cat Hii string with original description.
+ //
+ if (HiiString != NULL) {
+ BootStringNumber = Option->Description;
+ Option->Description = AllocateZeroPool(StrSize(BootStringNumber) + StrSize(HiiString));
+ StrCpy (Option->Description, HiiString);
if (StrnCmp (BootStringNumber, L"0", 1) != 0) {
StrCat (Option->Description, L" ");
StrCat (Option->Description, BootStringNumber);
- }
+ }
+ FreePool (HiiString);
FreePool (BootStringNumber);
}
+ ASSERT (Option->Description != NULL);
+
Token = HiiSetString (HiiHandle, 0, Option->Description, NULL);
TempStr = DevicePathToStr (Option->DevicePath);