The output of "dh <handle>" originally is like below:
12C: USBIO DevicePath(x0)/Pci(0x14,0x0)/USB(0x6,0x0))

The device path part is very confusing. Use ".." in front of the
partially displayed device path is better and it also aligns to
the example output in Shell spec.
12C: USBIO DevicePath(..)/Pci(0x14,0x0)/USB(0x6,0x0))

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <[email protected]>
Cc: Jiewen Yao <[email protected]>
Cc: Jaben Carsey <[email protected]>
---
 .../UefiHandleParsingLib/UefiHandleParsingLib.c    | 347 +++++++++++----------
 1 file changed, 175 insertions(+), 172 deletions(-)

diff --git a/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c 
b/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
index a81d1f2..9103a24 100644
--- a/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
+++ b/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
@@ -244,15 +244,15 @@ GraphicsOutputProtocolDumpInformation(
   IN CONST BOOLEAN    Verbose
   )
 {
-  EFI_GRAPHICS_OUTPUT_PROTOCOL          *GraphicsOutput;
-  EFI_STATUS                            Status;
-  CHAR16                                *RetVal;
-  CHAR16                                *Temp;
-  CHAR16                                *Fmt;
-  CHAR16                                *TempRetVal;
-  UINTN                                 GopInfoSize;
-  UINT32                                Mode;
-  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  *GopInfo;
+  EFI_GRAPHICS_OUTPUT_PROTOCOL          *GraphicsOutput;
+  EFI_STATUS                            Status;
+  CHAR16                                *RetVal;
+  CHAR16                                *Temp;
+  CHAR16                                *Fmt;
+  CHAR16                                *TempRetVal;
+  UINTN                                 GopInfoSize;
+  UINT32                                Mode;
+  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  *GopInfo;
 
   if (!Verbose) {
     return (CatSPrint(NULL, L"GraphicsOutput"));
@@ -299,53 +299,53 @@ GraphicsOutputProtocolDumpInformation(
              
GraphicsOutput->Mode->Info->PixelFormat!=PixelBitMask?0:GraphicsOutput->Mode->Info->PixelInformation.BlueMask
              );
 
-  SHELL_FREE_NON_NULL (Temp);
-  
+  SHELL_FREE_NON_NULL (Temp);
+  
   Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN 
(STR_GOP_RES_LIST_MAIN), NULL);
   if (Temp == NULL) {
     SHELL_FREE_NON_NULL (RetVal);
     goto EXIT;
   }
-
-  TempRetVal = CatSPrint (RetVal, Temp);
+
+  TempRetVal = CatSPrint (RetVal, Temp);
   SHELL_FREE_NON_NULL (RetVal);
   if (TempRetVal == NULL) {
     goto EXIT;
   }
-  RetVal = TempRetVal;
-  SHELL_FREE_NON_NULL (Temp);
-
+  RetVal = TempRetVal;
+  SHELL_FREE_NON_NULL (Temp);
+
   Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN 
(STR_GOP_RES_LIST_ENTRY), NULL);
   if (Temp == NULL) {
     SHELL_FREE_NON_NULL (RetVal);
     goto EXIT;
   }
 
-
-  for (Mode = 0; Mode < GraphicsOutput->Mode->MaxMode; Mode++) {
-    Status = GraphicsOutput->QueryMode (
-                               GraphicsOutput,
-                               Mode,
-                               &GopInfoSize,
-                               &GopInfo
-                               );
-    if (EFI_ERROR (Status)) {
-      continue;
-    }
-
-    TempRetVal = CatSPrint (
-                   RetVal,
-                   Temp,
-                   Mode,
-                   GopInfo->HorizontalResolution,
-                   GopInfo->VerticalResolution
-                   );
-
-    SHELL_FREE_NON_NULL (GopInfo);
-    SHELL_FREE_NON_NULL (RetVal);
-    RetVal = TempRetVal;
-  }
-
+
+  for (Mode = 0; Mode < GraphicsOutput->Mode->MaxMode; Mode++) {
+    Status = GraphicsOutput->QueryMode (
+                               GraphicsOutput,
+                               Mode,
+                               &GopInfoSize,
+                               &GopInfo
+                               );
+    if (EFI_ERROR (Status)) {
+      continue;
+    }
+
+    TempRetVal = CatSPrint (
+                   RetVal,
+                   Temp,
+                   Mode,
+                   GopInfo->HorizontalResolution,
+                   GopInfo->VerticalResolution
+                   );
+
+    SHELL_FREE_NON_NULL (GopInfo);
+    SHELL_FREE_NON_NULL (RetVal);
+    RetVal = TempRetVal;
+  }
+
 
 EXIT:
   SHELL_FREE_NON_NULL(Temp);
@@ -355,134 +355,134 @@ EXIT:
 }
 
 /**
-  Function to dump information about EDID Discovered Protocol.
-
-  This will allocate the return buffer from boot services pool.
-
-  @param[in] TheHandle      The handle that has LoadedImage installed.
-  @param[in] Verbose        TRUE for additional information, FALSE otherwise.
-
-  @retval A pointer to a string containing the information.
-**/
-CHAR16*
-EFIAPI
-EdidDiscoveredProtocolDumpInformation (
-  IN CONST EFI_HANDLE TheHandle,
-  IN CONST BOOLEAN    Verbose
-  )
-{
-  EFI_EDID_DISCOVERED_PROTOCOL          *EdidDiscovered;
-  EFI_STATUS                            Status;
-  CHAR16                                *RetVal;
-  CHAR16                                *Temp;
-  CHAR16                                *TempRetVal;
-
-  if (!Verbose) {
-    return (CatSPrint (NULL, L"EDIDDiscovered"));
-  }
-
-  Status = gBS->OpenProtocol (
-                  TheHandle,
-                  &gEfiEdidDiscoveredProtocolGuid,
-                  (VOID**)&EdidDiscovered,
-                  NULL,
-                  NULL,
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL
-                  );
-
-  if (EFI_ERROR (Status)) {
-    return NULL;
-  }
-
-  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN 
(STR_EDID_DISCOVERED_MAIN), NULL);
-  if (Temp == NULL) {
-    return NULL;
-  }
-
-  RetVal = CatSPrint (NULL, Temp, EdidDiscovered->SizeOfEdid);
-  SHELL_FREE_NON_NULL (Temp);
-
-  if (EdidDiscovered->SizeOfEdid != 0) {
-    Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN 
(STR_EDID_DISCOVERED_DATA), NULL);
-    if (Temp == NULL) {
-      SHELL_FREE_NON_NULL (RetVal);
-      return NULL;
-    }
-    TempRetVal = CatSPrint (RetVal, Temp);
-    SHELL_FREE_NON_NULL (RetVal);
-    RetVal = TempRetVal;
-
-    TempRetVal = CatSDumpHex (RetVal, 7, 0, EdidDiscovered->SizeOfEdid, 
EdidDiscovered->Edid);
-    RetVal = TempRetVal;
-  }
-  return RetVal;
-}
-
-/**
-  Function to dump information about EDID Active Protocol.
-
-  This will allocate the return buffer from boot services pool.
-
-  @param[in] TheHandle      The handle that has LoadedImage installed.
-  @param[in] Verbose        TRUE for additional information, FALSE otherwise.
-
-  @retval A pointer to a string containing the information.
-**/
-CHAR16*
-EFIAPI
-EdidActiveProtocolDumpInformation (
-  IN CONST EFI_HANDLE TheHandle,
-  IN CONST BOOLEAN    Verbose
-  )
-{
-  EFI_EDID_ACTIVE_PROTOCOL  *EdidActive;
-  EFI_STATUS                Status;
-  CHAR16                    *RetVal;
-  CHAR16                    *Temp;
-  CHAR16                    *TempRetVal;
-
-  if (!Verbose) {
-    return (CatSPrint (NULL, L"EDIDActive"));
-  }
-
-  Status = gBS->OpenProtocol (
-                  TheHandle,
-                  &gEfiEdidActiveProtocolGuid,
-                  (VOID**)&EdidActive,
-                  NULL,
-                  NULL,
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL
-                  );
-
-  if (EFI_ERROR (Status)) {
-    return NULL;
-  }
-
-  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN 
(STR_EDID_ACTIVE_MAIN), NULL);
-  if (Temp == NULL) {
-    return NULL;
-  }
-
-  RetVal = CatSPrint (NULL, Temp, EdidActive->SizeOfEdid);
-  SHELL_FREE_NON_NULL (Temp);
-
-  if (EdidActive->SizeOfEdid != 0) {
-    Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN 
(STR_EDID_ACTIVE_DATA), NULL);
-    if (Temp == NULL) {
-      SHELL_FREE_NON_NULL (RetVal);
-      return NULL;
-    }
-    TempRetVal = CatSPrint (RetVal, Temp);
-    SHELL_FREE_NON_NULL (RetVal);
-    RetVal = TempRetVal;
-
-    TempRetVal = CatSDumpHex (RetVal, 7, 0, EdidActive->SizeOfEdid, 
EdidActive->Edid);
-    RetVal = TempRetVal;
-  }
-  return RetVal;
-}
-
-/**
+  Function to dump information about EDID Discovered Protocol.
+
+  This will allocate the return buffer from boot services pool.
+
+  @param[in] TheHandle      The handle that has LoadedImage installed.
+  @param[in] Verbose        TRUE for additional information, FALSE otherwise.
+
+  @retval A pointer to a string containing the information.
+**/
+CHAR16*
+EFIAPI
+EdidDiscoveredProtocolDumpInformation (
+  IN CONST EFI_HANDLE TheHandle,
+  IN CONST BOOLEAN    Verbose
+  )
+{
+  EFI_EDID_DISCOVERED_PROTOCOL          *EdidDiscovered;
+  EFI_STATUS                            Status;
+  CHAR16                                *RetVal;
+  CHAR16                                *Temp;
+  CHAR16                                *TempRetVal;
+
+  if (!Verbose) {
+    return (CatSPrint (NULL, L"EDIDDiscovered"));
+  }
+
+  Status = gBS->OpenProtocol (
+                  TheHandle,
+                  &gEfiEdidDiscoveredProtocolGuid,
+                  (VOID**)&EdidDiscovered,
+                  NULL,
+                  NULL,
+                  EFI_OPEN_PROTOCOL_GET_PROTOCOL
+                  );
+
+  if (EFI_ERROR (Status)) {
+    return NULL;
+  }
+
+  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN 
(STR_EDID_DISCOVERED_MAIN), NULL);
+  if (Temp == NULL) {
+    return NULL;
+  }
+
+  RetVal = CatSPrint (NULL, Temp, EdidDiscovered->SizeOfEdid);
+  SHELL_FREE_NON_NULL (Temp);
+
+  if (EdidDiscovered->SizeOfEdid != 0) {
+    Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN 
(STR_EDID_DISCOVERED_DATA), NULL);
+    if (Temp == NULL) {
+      SHELL_FREE_NON_NULL (RetVal);
+      return NULL;
+    }
+    TempRetVal = CatSPrint (RetVal, Temp);
+    SHELL_FREE_NON_NULL (RetVal);
+    RetVal = TempRetVal;
+
+    TempRetVal = CatSDumpHex (RetVal, 7, 0, EdidDiscovered->SizeOfEdid, 
EdidDiscovered->Edid);
+    RetVal = TempRetVal;
+  }
+  return RetVal;
+}
+
+/**
+  Function to dump information about EDID Active Protocol.
+
+  This will allocate the return buffer from boot services pool.
+
+  @param[in] TheHandle      The handle that has LoadedImage installed.
+  @param[in] Verbose        TRUE for additional information, FALSE otherwise.
+
+  @retval A pointer to a string containing the information.
+**/
+CHAR16*
+EFIAPI
+EdidActiveProtocolDumpInformation (
+  IN CONST EFI_HANDLE TheHandle,
+  IN CONST BOOLEAN    Verbose
+  )
+{
+  EFI_EDID_ACTIVE_PROTOCOL  *EdidActive;
+  EFI_STATUS                Status;
+  CHAR16                    *RetVal;
+  CHAR16                    *Temp;
+  CHAR16                    *TempRetVal;
+
+  if (!Verbose) {
+    return (CatSPrint (NULL, L"EDIDActive"));
+  }
+
+  Status = gBS->OpenProtocol (
+                  TheHandle,
+                  &gEfiEdidActiveProtocolGuid,
+                  (VOID**)&EdidActive,
+                  NULL,
+                  NULL,
+                  EFI_OPEN_PROTOCOL_GET_PROTOCOL
+                  );
+
+  if (EFI_ERROR (Status)) {
+    return NULL;
+  }
+
+  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN 
(STR_EDID_ACTIVE_MAIN), NULL);
+  if (Temp == NULL) {
+    return NULL;
+  }
+
+  RetVal = CatSPrint (NULL, Temp, EdidActive->SizeOfEdid);
+  SHELL_FREE_NON_NULL (Temp);
+
+  if (EdidActive->SizeOfEdid != 0) {
+    Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN 
(STR_EDID_ACTIVE_DATA), NULL);
+    if (Temp == NULL) {
+      SHELL_FREE_NON_NULL (RetVal);
+      return NULL;
+    }
+    TempRetVal = CatSPrint (RetVal, Temp);
+    SHELL_FREE_NON_NULL (RetVal);
+    RetVal = TempRetVal;
+
+    TempRetVal = CatSDumpHex (RetVal, 7, 0, EdidActive->SizeOfEdid, 
EdidActive->Edid);
+    RetVal = TempRetVal;
+  }
+  return RetVal;
+}
+
+/**
   Function to dump information about PciRootBridgeIo.
 
   This will allocate the return buffer from boot services pool.
@@ -753,6 +753,7 @@ DevicePathProtocolDumpInformation(
   CHAR16                            *Temp;
   CHAR16                            *Temp2;
   EFI_STATUS                        Status;
+  UINTN                             Size;
   Temp = NULL;
 
   Status = gBS->OpenProtocol(TheHandle, &gEfiDevicePathProtocolGuid, 
(VOID**)&DevPath, gImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);
@@ -765,7 +766,9 @@ DevicePathProtocolDumpInformation(
   }
   if (!Verbose && Temp != NULL && StrLen(Temp) > 30) {
     Temp2 = NULL;
-    Temp2 = StrnCatGrow(&Temp2, NULL, Temp+(StrLen(Temp) - 30), 30);
+    Size  = 0;
+    Temp2 = StrnCatGrow(&Temp2, &Size, L"..", 0);
+    Temp2 = StrnCatGrow(&Temp2, &Size, Temp+(StrLen(Temp) - 28), 0);
     FreePool(Temp);
     Temp = Temp2;
   }
@@ -1475,8 +1478,8 @@ STATIC CONST GUID_INFO_BLOCK mGuidStringList[] = {
   {STRING_TOKEN(STR_ABS_POINTER),           &gEfiAbsolutePointerProtocolGuid,  
               NULL},
   {STRING_TOKEN(STR_SERIAL_IO),             &gEfiSerialIoProtocolGuid,         
               NULL},
   {STRING_TOKEN(STR_GRAPHICS_OUTPUT),       &gEfiGraphicsOutputProtocolGuid,   
               GraphicsOutputProtocolDumpInformation},
-  {STRING_TOKEN(STR_EDID_DISCOVERED),       &gEfiEdidDiscoveredProtocolGuid,   
               EdidDiscoveredProtocolDumpInformation},
-  {STRING_TOKEN(STR_EDID_ACTIVE),           &gEfiEdidActiveProtocolGuid,       
               EdidActiveProtocolDumpInformation},
+  {STRING_TOKEN(STR_EDID_DISCOVERED),       &gEfiEdidDiscoveredProtocolGuid,   
               EdidDiscoveredProtocolDumpInformation},
+  {STRING_TOKEN(STR_EDID_ACTIVE),           &gEfiEdidActiveProtocolGuid,       
               EdidActiveProtocolDumpInformation},
   {STRING_TOKEN(STR_EDID_OVERRIDE),         &gEfiEdidOverrideProtocolGuid,     
               NULL},
   {STRING_TOKEN(STR_CON_IN),                &gEfiConsoleInDeviceGuid,          
               NULL},
   {STRING_TOKEN(STR_CON_OUT),               &gEfiConsoleOutDeviceGuid,         
               NULL},
-- 
2.8.3.windows.1

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to