ShellPkg/AcpiView: Refactor DumpAcpiTableToFile

Method is refactored into two parts. A new method is
created that dumps arbitrary buffers into a newly created
file. This method is called from core code after the core code
determined the appropriate filename to be used.

This improves the modular design.

Cc: Ray Ni <ray.ni@intel.com>
Cc: Zhichao Gao <zhichao.gao@intel.com>
Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>
Signed-off-by: Tomas Pilar <tomas.pilar@arm.com>
This commit is contained in:
Tomas Pilar
2020-06-19 12:59:54 +01:00
committed by mergify[bot]
parent 422fe85cc3
commit d45cf5ffdf
3 changed files with 76 additions and 38 deletions

View File

@ -27,8 +27,6 @@
#include "Arm/SbbrValidator.h"
#endif
EFI_HII_HANDLE gShellAcpiViewHiiHandle = NULL;
STATIC UINT32 mTableCount;
STATIC UINT32 mBinTableCount;
@ -48,14 +46,10 @@ DumpAcpiTableToFile (
IN CONST UINTN Length
)
{
EFI_STATUS Status;
CHAR16 FileNameBuffer[MAX_FILE_NAME_LEN];
SHELL_FILE_HANDLE DumpFileHandle;
UINTN TransferBytes;
SELECTED_ACPI_TABLE *SelectedTable;
DumpFileHandle = NULL;
TransferBytes = Length;
GetSelectedAcpiTable (&SelectedTable);
UnicodeSPrint (
@ -66,39 +60,9 @@ DumpAcpiTableToFile (
mBinTableCount++
);
Status = ShellOpenFileByName (
FileNameBuffer,
&DumpFileHandle,
EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CREATE,
0
);
if (EFI_ERROR (Status)) {
ShellPrintHiiEx (
-1,
-1,
NULL,
STRING_TOKEN (STR_GEN_READONLY_MEDIA),
gShellAcpiViewHiiHandle,
L"acpiview"
);
return FALSE;
}
Print (L"Dumping ACPI table to : %s ... ", FileNameBuffer);
Status = ShellWriteFile (
DumpFileHandle,
&TransferBytes,
(VOID*)Ptr
);
if (EFI_ERROR (Status)) {
Print (L"ERROR: Failed to dump table to binary file.\n");
TransferBytes = 0;
} else {
Print (L"DONE.\n");
}
ShellCloseFile (&DumpFileHandle);
TransferBytes = ShellDumpBufferToFile (FileNameBuffer, Ptr, Length);
return (Length == TransferBytes);
}