#include "Arm/SbbrValidator.h"\r
#endif\r
\r
-EFI_HII_HANDLE gShellAcpiViewHiiHandle = NULL;\r
-\r
STATIC UINT32 mTableCount;\r
STATIC UINT32 mBinTableCount;\r
\r
IN CONST UINTN Length\r
)\r
{\r
- EFI_STATUS Status;\r
CHAR16 FileNameBuffer[MAX_FILE_NAME_LEN];\r
- SHELL_FILE_HANDLE DumpFileHandle;\r
UINTN TransferBytes;\r
SELECTED_ACPI_TABLE *SelectedTable;\r
\r
- DumpFileHandle = NULL;\r
- TransferBytes = Length;\r
GetSelectedAcpiTable (&SelectedTable);\r
\r
UnicodeSPrint (\r
mBinTableCount++\r
);\r
\r
- Status = ShellOpenFileByName (\r
- FileNameBuffer,\r
- &DumpFileHandle,\r
- EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CREATE,\r
- 0\r
- );\r
- if (EFI_ERROR (Status)) {\r
- ShellPrintHiiEx (\r
- -1,\r
- -1,\r
- NULL,\r
- STRING_TOKEN (STR_GEN_READONLY_MEDIA),\r
- gShellAcpiViewHiiHandle,\r
- L"acpiview"\r
- );\r
- return FALSE;\r
- }\r
-\r
Print (L"Dumping ACPI table to : %s ... ", FileNameBuffer);\r
\r
- Status = ShellWriteFile (\r
- DumpFileHandle,\r
- &TransferBytes,\r
- (VOID*)Ptr\r
- );\r
- if (EFI_ERROR (Status)) {\r
- Print (L"ERROR: Failed to dump table to binary file.\n");\r
- TransferBytes = 0;\r
- } else {\r
- Print (L"DONE.\n");\r
- }\r
-\r
- ShellCloseFile (&DumpFileHandle);\r
+ TransferBytes = ShellDumpBufferToFile (FileNameBuffer, Ptr, Length);\r
return (Length == TransferBytes);\r
}\r
\r
#include "UefiShellAcpiViewCommandLib.h"\r
\r
CONST CHAR16 gShellAcpiViewFileName[] = L"ShellCommand";\r
+EFI_HII_HANDLE gShellAcpiViewHiiHandle = NULL;\r
\r
/**\r
An array of acpiview command line parameters.\r
return Status;\r
}\r
\r
+/**\r
+ Dump a buffer to a file. Print error message if a file cannot be created.\r
+\r
+ @param[in] FileName The filename that shall be created to contain the buffer.\r
+ @param[in] Buffer Pointer to buffer that shall be dumped.\r
+ @param[in] BufferSize The size of buffer to be dumped in bytes.\r
+\r
+ @return The number of bytes that were written\r
+**/\r
+UINTN\r
+EFIAPI\r
+ShellDumpBufferToFile (\r
+ IN CONST CHAR16* FileNameBuffer,\r
+ IN CONST VOID* Buffer,\r
+ IN CONST UINTN BufferSize\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ SHELL_FILE_HANDLE DumpFileHandle;\r
+ UINTN TransferBytes;\r
+\r
+ Status = ShellOpenFileByName (\r
+ FileNameBuffer,\r
+ &DumpFileHandle,\r
+ EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CREATE,\r
+ 0\r
+ );\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ ShellPrintHiiEx (\r
+ -1,\r
+ -1,\r
+ NULL,\r
+ STRING_TOKEN (STR_GEN_READONLY_MEDIA),\r
+ gShellAcpiViewHiiHandle,\r
+ L"acpiview"\r
+ );\r
+ return 0;\r
+ }\r
+\r
+ TransferBytes = BufferSize;\r
+ Status = ShellWriteFile (\r
+ DumpFileHandle,\r
+ &TransferBytes,\r
+ (VOID *) Buffer\r
+ );\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ Print (L"ERROR: Failed to write binary file.\n");\r
+ TransferBytes = 0;\r
+ } else {\r
+ Print (L"DONE.\n");\r
+ }\r
+\r
+ ShellCloseFile (&DumpFileHandle);\r
+ return TransferBytes;\r
+}\r
+\r
/**\r
Return the file name of the help text file if not using HII.\r
\r
#ifndef UEFI_SHELL_ACPIVIEW_COMMAND_LIB_H_\r
#define UEFI_SHELL_ACPIVIEW_COMMAND_LIB_H_\r
\r
-extern EFI_HII_HANDLE gShellAcpiViewHiiHandle;\r
+/**\r
+ Dump a buffer to a file. Print error message if a file cannot be created.\r
+\r
+ @param[in] FileName The filename that shall be created to contain the buffer.\r
+ @param[in] Buffer Pointer to buffer that shall be dumped.\r
+ @param[in] BufferSize The size of buffer to be dumped in bytes.\r
+\r
+ @return The number of bytes that were written\r
+**/\r
+UINTN\r
+EFIAPI\r
+ShellDumpBufferToFile (\r
+ IN CONST CHAR16* FileNameBuffer,\r
+ IN CONST VOID* Buffer,\r
+ IN CONST UINTN BufferSize\r
+ );\r
\r
/**\r
Function for 'acpiview' command.\r