} else {\r
SHELL_FREE_NON_NULL(FilePath);\r
}\r
- RetVal = CatSPrint(NULL, FileName);\r
- SHELL_FREE_NON_NULL(FileName);\r
- return RetVal;\r
+ return FileName;\r
}\r
\r
HandleParsingHiiInit();\r
break;\r
}\r
if (Temp != NULL) {\r
- Temp2 = CatSPrint(RetVal, L"%s", Temp);\r
+ Temp2 = CatSPrint(RetVal, L"\r\n%s", Temp);\r
FreePool(Temp);\r
FreePool(RetVal);\r
RetVal = Temp2;\r
}\r
\r
Temp2 = CatSPrint(RetVal,\r
- L"\r\n%%H%02x %016lx %016lx %02x%%N",\r
+ L"%%H%02x %016lx %016lx %02x%%N",\r
Configuration->SpecificFlag,\r
Configuration->AddrRangeMin,\r
Configuration->AddrRangeMax,\r
return NULL;\r
}\r
\r
+/**\r
+ Function to dump information about Partition Information protocol.\r
+\r
+ This will allocate the return buffer from boot services pool.\r
+\r
+ @param[in] TheHandle The handle that has the protocol installed.\r
+ @param[in] Verbose TRUE for additional information, FALSE otherwise.\r
+\r
+ @retval A pointer to a string containing the information.\r
+**/\r
+CHAR16*\r
+EFIAPI\r
+PartitionInfoProtocolDumpInformation (\r
+ IN CONST EFI_HANDLE TheHandle,\r
+ IN CONST BOOLEAN Verbose\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ EFI_PARTITION_INFO_PROTOCOL *PartitionInfo;\r
+ CHAR16 *PartitionType;\r
+ CHAR16 *EfiSystemPartition;\r
+ CHAR16 *RetVal;\r
+\r
+ if (!Verbose) {\r
+ return NULL;\r
+ }\r
+\r
+ Status = gBS->OpenProtocol (\r
+ TheHandle,\r
+ &gEfiPartitionInfoProtocolGuid,\r
+ (VOID**)&PartitionInfo,\r
+ gImageHandle,\r
+ NULL,\r
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ return NULL;\r
+ }\r
+\r
+ HandleParsingHiiInit ();\r
+\r
+ switch (PartitionInfo->Type) {\r
+ case PARTITION_TYPE_OTHER:\r
+ PartitionType = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_PARTINFO_DUMP_TYPE_OTHER), NULL);\r
+ break;\r
+ case PARTITION_TYPE_MBR:\r
+ PartitionType = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_PARTINFO_DUMP_TYPE_MBR), NULL);\r
+ break;\r
+ case PARTITION_TYPE_GPT:\r
+ PartitionType = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_PARTINFO_DUMP_TYPE_GPT), NULL);\r
+ break;\r
+ default:\r
+ PartitionType = NULL;\r
+ break;\r
+ }\r
+ if (PartitionType == NULL) {\r
+ return NULL;\r
+ }\r
+\r
+ if (PartitionInfo->System == 1) {\r
+ EfiSystemPartition = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_PARTINFO_DUMP_EFI_SYS_PART), NULL);\r
+ } else {\r
+ EfiSystemPartition = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_PARTINFO_DUMP_NOT_EFI_SYS_PART), NULL);\r
+ }\r
+ if (EfiSystemPartition == NULL) {\r
+ SHELL_FREE_NON_NULL (PartitionType);\r
+ return NULL;\r
+ }\r
+\r
+ RetVal = CatSPrint (\r
+ NULL,\r
+ L"%s\r\n%s",\r
+ PartitionType,\r
+ EfiSystemPartition\r
+ );\r
+\r
+ SHELL_FREE_NON_NULL (EfiSystemPartition);\r
+ SHELL_FREE_NON_NULL (PartitionType);\r
+ return RetVal;\r
+}\r
+\r
//\r
// Put the information on the NT32 protocol GUIDs here so we are not dependant on the Nt32Pkg\r
//\r
{STRING_TOKEN(STR_UFS_DEV_CONFIG), &gEfiUfsDeviceConfigProtocolGuid, NULL},\r
{STRING_TOKEN(STR_HTTP_BOOT_CALL), &gEfiHttpBootCallbackProtocolGuid, NULL},\r
{STRING_TOKEN(STR_RESET_NOTI), &gEfiResetNotificationProtocolGuid, NULL},\r
- {STRING_TOKEN(STR_PARTITION_INFO), &gEfiPartitionInfoProtocolGuid, NULL},\r
+ {STRING_TOKEN(STR_PARTITION_INFO), &gEfiPartitionInfoProtocolGuid, PartitionInfoProtocolDumpInformation},\r
{STRING_TOKEN(STR_HII_POPUP), &gEfiHiiPopupProtocolGuid, NULL},\r
\r
//\r