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...@intel.com>

Cc: Zhichao Gao <zhichao....@intel.com>

Signed-off-by: Tomas Pilar <tomas.pi...@arm.com>

---

 ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c                    | 
35 +----------------------------------

 ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c | 
58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.h | 
17 +++++++++++++++++

 3 files changed, 76 insertions(+), 34 deletions(-)



diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c 
b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c

index a3160ed6f0a2..e866b84c6844 100644

--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c

+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c

@@ -48,13 +48,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);



@@ -66,39 +63,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 = DumpFile (FileNameBuffer, Ptr, Length);

   return (Length == TransferBytes);

 }



diff --git 
a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c 
b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c

index c3942ad24e5b..adf3cce6cfe2 100644

--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c

+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c

@@ -98,6 +98,64 @@ RegisterAllParsers (

   return Status;

 }



+/**

+  Dump a buffer to a file

+

+  @param[in] FileName   The filename that shall be created to contain the 
buffer

+  @param[in] Buffer     Pointer to buffer that shall be dumped

+  @param[in] BufferSize The size of buffer to be dumped in bytes

+

+  @return The number of bytes that were written

+**/

+UINTN

+EFIAPI

+DumpFile (

+  IN CONST CHAR16* FileNameBuffer,

+  IN CONST VOID*   Buffer,

+  IN CONST UINTN   BufferSize

+  )

+{

+  EFI_STATUS          Status;

+  SHELL_FILE_HANDLE   DumpFileHandle;

+  UINTN               TransferBytes;

+

+  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 0;

+  }

+

+  TransferBytes = BufferSize;

+  Status = ShellWriteFile (

+             DumpFileHandle,

+             &TransferBytes,

+             (VOID *) Buffer

+             );

+

+  if (EFI_ERROR (Status)) {

+    Print (L"ERROR: Failed to write binary file.\n");

+    TransferBytes = 0;

+  } else {

+    Print (L"DONE.\n");

+  }

+

+  ShellCloseFile (&DumpFileHandle);

+  return TransferBytes;

+}

+

 /**

   Return the file name of the help text file if not using HII.



diff --git 
a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.h 
b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.h

index a3a29164004d..9dd39cf4b3f0 100644

--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.h

+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.h

@@ -10,6 +10,23 @@



 extern EFI_HII_HANDLE gShellAcpiViewHiiHandle;



+/**

+  Dump a buffer to a file

+

+  @param[in] FileName   The filename that shall be created to contain the 
buffer

+  @param[in] Buffer     Pointer to buffer that shall be dumped

+  @param[in] BufferSize The size of buffer to be dumped in bytes

+

+  @return The number of bytes that were written

+**/

+UINTN

+EFIAPI

+DumpFile (

+  IN CONST CHAR16* FileNameBuffer,

+  IN CONST VOID*   Buffer,

+  IN CONST UINTN   BufferSize

+  );

+

 /**

   Function for 'acpiview' command.



--

2.24.1.windows.2




IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#60055): https://edk2.groups.io/g/devel/message/60055
Mute This Topic: https://groups.io/mt/74381820/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to