]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Application/Shell/FileHandleWrappers.c
ShellPkg/help: Fix "-?" may not show manual sometimes
[mirror_edk2.git] / ShellPkg / Application / Shell / FileHandleWrappers.c
index 0a7a60294dc79d7171d17eb85c2748d45be043c2..63aad69fe89799e038791059d51a07eccbffe4b5 100644 (file)
@@ -3,7 +3,7 @@
   StdIn, StdOut, StdErr, etc...).\r
 \r
   Copyright 2016 Dell Inc.\r
-  Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
   (C) Copyright 2013 Hewlett-Packard Development Company, L.P.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
@@ -1554,6 +1554,54 @@ FileInterfaceMemGetPosition(
   return (EFI_SUCCESS);\r
 }\r
 \r
+/**\r
+  File style interface for Mem (GetInfo).\r
+\r
+  @param  This            Protocol instance pointer.\r
+  @param  InformationType Type of information to return in Buffer.\r
+  @param  BufferSize      On input size of buffer, on output amount of data in buffer.\r
+  @param  Buffer          The buffer to return data.\r
+\r
+  @retval EFI_SUCCESS          Data was returned.\r
+  @retval EFI_UNSUPPORT        InformationType is not supported.\r
+  @retval EFI_NO_MEDIA         The device has no media.\r
+  @retval EFI_DEVICE_ERROR     The device reported an error.\r
+  @retval EFI_VOLUME_CORRUPTED The file system structures are corrupted.\r
+  @retval EFI_WRITE_PROTECTED  The device is write protected.\r
+  @retval EFI_ACCESS_DENIED    The file was open for read only.\r
+  @retval EFI_BUFFER_TOO_SMALL Buffer was too small; required size returned in BufferSize.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+FileInterfaceMemGetInfo(\r
+  IN EFI_FILE_PROTOCOL        *This,\r
+  IN EFI_GUID                 *InformationType,\r
+  IN OUT UINTN                *BufferSize,\r
+  OUT VOID                    *Buffer\r
+  )\r
+{\r
+  EFI_FILE_INFO               *FileInfo;\r
+\r
+  if (CompareGuid (InformationType, &gEfiFileInfoGuid)) {\r
+    if (*BufferSize < sizeof (EFI_FILE_INFO)) {\r
+      *BufferSize = sizeof (EFI_FILE_INFO);\r
+      return EFI_BUFFER_TOO_SMALL;\r
+    }\r
+    if (Buffer == NULL) {\r
+      return EFI_INVALID_PARAMETER;\r
+    }\r
+    FileInfo = (EFI_FILE_INFO *)Buffer;\r
+    FileInfo->Size = sizeof (*FileInfo);\r
+    ZeroMem (FileInfo, sizeof (*FileInfo));\r
+    FileInfo->FileSize = ((EFI_FILE_PROTOCOL_MEM*)This)->FileSize;\r
+    FileInfo->PhysicalSize = FileInfo->FileSize;\r
+    return EFI_SUCCESS;\r
+  }\r
+\r
+  return EFI_UNSUPPORTED;\r
+}\r
+\r
 /**\r
   File style interface for Mem (Write).\r
   \r
@@ -1689,7 +1737,7 @@ CreateFileInterfaceMem(
   FileInterface->Close       = FileInterfaceMemClose;\r
   FileInterface->GetPosition = FileInterfaceMemGetPosition;\r
   FileInterface->SetPosition = FileInterfaceMemSetPosition;\r
-  FileInterface->GetInfo     = FileInterfaceNopGetInfo;\r
+  FileInterface->GetInfo     = FileInterfaceMemGetInfo;\r
   FileInterface->SetInfo     = FileInterfaceNopSetInfo;\r
   FileInterface->Flush       = FileInterfaceNopGeneric;\r
   FileInterface->Delete      = FileInterfaceNopGeneric;\r