]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDriver1CommandsLib/Dh.c
ShellPkg/HandleParsingLib: Return NULL name for unknown GUID
[mirror_edk2.git] / ShellPkg / Library / UefiShellDriver1CommandsLib / Dh.c
index a0dc1394117f441754fe67759f9c0025df4909b0..0ac49e1e7877323aaa3f53a561d2d36df50fb60c 100644 (file)
@@ -1,7 +1,8 @@
 /** @file\r
   Main file for Dh shell Driver1 function.\r
 \r
-  Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.<BR>\r
+  (C) Copyright 2014-2015 Hewlett-Packard Development Company, L.P.<BR>\r
+  Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -52,7 +53,6 @@ STATIC CONST EFI_GUID *UefiDriverModelProtocolsGuidArray[] = {
   @retval EFI_SUCCESS     The name was found.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 GetDriverName (\r
   IN EFI_HANDLE   TheHandle,\r
   IN CONST CHAR8  *Language,\r
@@ -60,7 +60,6 @@ GetDriverName (
   )\r
 {\r
   CHAR8                             *Lang;\r
-  CHAR8                             *TempChar;\r
   EFI_STATUS                        Status;\r
   EFI_COMPONENT_NAME2_PROTOCOL      *CompName2;\r
   CHAR16                            *NameToReturn;\r
@@ -87,23 +86,7 @@ GetDriverName (
   if (EFI_ERROR(Status)) {\r
     return (EFI_NOT_FOUND);\r
   }\r
-  if (Language == NULL) {\r
-    Lang = AllocateZeroPool(AsciiStrSize(CompName2->SupportedLanguages));\r
-    if (Lang == NULL) {\r
-      return (EFI_OUT_OF_RESOURCES);\r
-    }\r
-    AsciiStrCpy(Lang, CompName2->SupportedLanguages);\r
-    TempChar = AsciiStrStr(Lang, ";");\r
-    if (TempChar != NULL){\r
-      *TempChar = CHAR_NULL;\r
-    }\r
-  } else {\r
-    Lang = AllocateZeroPool(AsciiStrSize(Language));\r
-    if (Lang == NULL) {\r
-      return (EFI_OUT_OF_RESOURCES);\r
-    }\r
-    AsciiStrCpy(Lang, Language);\r
-  }\r
+  Lang = GetBestLanguageForDriver (CompName2->SupportedLanguages, Language, FALSE);\r
   Status = CompName2->GetDriverName(CompName2, Lang, &NameToReturn);\r
   FreePool(Lang);\r
 \r
@@ -123,7 +106,6 @@ GetDriverName (
   @retval FALSE     The guid does not represent a driver model protocol.\r
 **/\r
 BOOLEAN\r
-EFIAPI\r
 IsDriverProt (\r
   IN CONST EFI_GUID *Guid\r
   )\r
@@ -148,7 +130,7 @@ IsDriverProt (
 \r
   @param[in] TheHandle        The handles to show info on.\r
   @param[in] Language         Language string per UEFI specification.\r
-  @param[in] Seperator        Separator string between information blocks.\r
+  @param[in] Separator        Separator string between information blocks.\r
   @param[in] Verbose          TRUE for extra info, FALSE otherwise.\r
   @param[in] ExtraInfo        TRUE for extra info, FALSE otherwise.\r
 \r
@@ -156,11 +138,10 @@ IsDriverProt (
   @retval SHELL_INVALID_PARAMETER ProtocolName was NULL or invalid.\r
 **/\r
 CHAR16*\r
-EFIAPI\r
 GetProtocolInfoString(\r
   IN CONST EFI_HANDLE TheHandle,\r
   IN CONST CHAR8      *Language,\r
-  IN CONST CHAR16     *Seperator,\r
+  IN CONST CHAR16     *Separator,\r
   IN CONST BOOLEAN    Verbose,\r
   IN CONST BOOLEAN    ExtraInfo\r
   )\r
@@ -172,6 +153,7 @@ GetProtocolInfoString(
   CHAR16                    *RetVal;\r
   UINTN                     Size;\r
   CHAR16                    *Temp;\r
+  CHAR16                    GuidStr[40];\r
 \r
   ProtocolGuidArray = NULL;\r
   RetVal            = NULL;\r
@@ -185,16 +167,19 @@ GetProtocolInfoString(
   if (!EFI_ERROR (Status)) {\r
     for (ProtocolIndex = 0; ProtocolIndex < ArrayCount; ProtocolIndex++) {\r
       Temp = GetStringNameFromGuid(ProtocolGuidArray[ProtocolIndex], Language);\r
-      if (Temp != NULL) {\r
-        ASSERT((RetVal == NULL && Size == 0) || (RetVal != NULL));\r
-        if (Size != 0) {\r
-          StrnCatGrow(&RetVal, &Size, Seperator, 0);\r
-        }\r
-        StrnCatGrow(&RetVal, &Size, L"%H", 0);\r
+      ASSERT((RetVal == NULL && Size == 0) || (RetVal != NULL));\r
+      if (Size != 0) {\r
+        StrnCatGrow(&RetVal, &Size, Separator, 0);\r
+      }\r
+      StrnCatGrow(&RetVal, &Size, L"%H", 0);\r
+      if (Temp == NULL) {\r
+        UnicodeSPrint (GuidStr, sizeof (GuidStr), L"%g", ProtocolGuidArray[ProtocolIndex]);\r
+        StrnCatGrow (&RetVal, &Size, GuidStr, 0);\r
+      } else {\r
         StrnCatGrow(&RetVal, &Size, Temp, 0);\r
-        StrnCatGrow(&RetVal, &Size, L"%N", 0);\r
         FreePool(Temp);\r
       }\r
+      StrnCatGrow(&RetVal, &Size, L"%N", 0);\r
       if (ExtraInfo) {\r
         Temp = GetProtocolInformationDump(TheHandle, ProtocolGuidArray[ProtocolIndex], Verbose);\r
         if (Temp != NULL) {\r
@@ -204,7 +189,7 @@ GetProtocolInfoString(
             StrnCatGrow(&RetVal, &Size, Temp, 0);\r
             StrnCatGrow(&RetVal, &Size, L")\r\n", 0);\r
           } else {\r
-            StrnCatGrow(&RetVal, &Size, Seperator, 0);\r
+            StrnCatGrow(&RetVal, &Size, Separator, 0);\r
             StrnCatGrow(&RetVal, &Size, Temp, 0);\r
           }\r
           FreePool(Temp);\r
@@ -220,7 +205,7 @@ GetProtocolInfoString(
   }\r
 \r
   ASSERT((RetVal == NULL && Size == 0) || (RetVal != NULL));\r
-  StrnCatGrow(&RetVal, &Size, Seperator, 0);\r
+  StrnCatGrow(&RetVal, &Size, Separator, 0);\r
   return (RetVal);\r
 }\r
 \r
@@ -233,7 +218,6 @@ GetProtocolInfoString(
   @retval EFI_SUCCESS     The operation was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 GetDriverImageName (\r
   IN EFI_HANDLE   TheHandle,\r
   OUT CHAR16      **Name\r
@@ -260,7 +244,7 @@ GetDriverImageName (
     return (Status);\r
   }\r
   DevicePath = LoadedImage->FilePath;\r
-  *Name = gDevPathToText->ConvertDevicePathToText(DevicePath, TRUE, TRUE);\r
+  *Name = ConvertDevicePathToText(DevicePath, TRUE, TRUE);\r
   return (EFI_SUCCESS);\r
 }\r
 \r
@@ -272,7 +256,6 @@ GetDriverImageName (
   @param[in] Language   The language to output in.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 DisplayDriverModelHandle (\r
   IN EFI_HANDLE  Handle,\r
   IN BOOLEAN     BestName,\r
@@ -300,6 +283,8 @@ DisplayDriverModelHandle (
   UINTN                       ChildIndex;\r
   BOOLEAN                     Image;\r
 \r
+  DriverName = NULL;\r
+\r
   //\r
   // See if Handle is a device handle and display its details.\r
   //\r
@@ -354,7 +339,7 @@ DisplayDriverModelHandle (
     ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DH_OUTPUT_DRIVER1), gShellDriver1HiiHandle, TempStringPointer!=NULL?TempStringPointer:L"<Unknown>");\r
     SHELL_FREE_NON_NULL(TempStringPointer);\r
   \r
-    TempStringPointer = gDevPathToText->ConvertDevicePathToText(DevicePath, TRUE, FALSE);\r
+    TempStringPointer = ConvertDevicePathToText(DevicePath, TRUE, FALSE);\r
     ShellPrintHiiEx(\r
       -1, \r
       -1, \r
@@ -662,7 +647,6 @@ DisplayDriverModelHandle (
   @retval SHELL_INVALID_PARAMETER ProtocolName was NULL or invalid.\r
 **/\r
 SHELL_STATUS\r
-EFIAPI\r
 DoDhByHandle(\r
   IN CONST EFI_HANDLE TheHandle,\r
   IN CONST BOOLEAN    Verbose,\r
@@ -674,9 +658,7 @@ DoDhByHandle(
 {\r
   CHAR16              *ProtocolInfoString;\r
   SHELL_STATUS        ShellStatus;\r
-  EFI_STATUS          Status;\r
 \r
-  Status              = EFI_SUCCESS;\r
   ShellStatus         = SHELL_SUCCESS;\r
   ProtocolInfoString  = NULL;\r
 \r
@@ -745,7 +727,6 @@ DoDhByHandle(
   @retval SHELL_INVALID_PARAMETER ProtocolName was NULL or invalid.\r
 **/\r
 SHELL_STATUS\r
-EFIAPI\r
 DoDhForHandleList(\r
   IN CONST EFI_HANDLE *HandleList,\r
   IN CONST BOOLEAN    Verbose,\r
@@ -768,6 +749,10 @@ DoDhForHandleList(
           DriverInfo,\r
           TRUE\r
          );\r
+    if (ShellGetExecutionBreakFlag ()) {\r
+      ShellStatus = SHELL_ABORTED;\r
+      break;\r
+    }\r
   }\r
   return (ShellStatus);\r
 }\r
@@ -784,7 +769,6 @@ DoDhForHandleList(
   @retval SHELL_INVALID_PARAMETER ProtocolName was NULL or invalid.\r
 **/\r
 SHELL_STATUS\r
-EFIAPI\r
 DoDhForAll(\r
   IN CONST BOOLEAN  Sfo,\r
   IN CONST BOOLEAN  Verbose,\r
@@ -822,7 +806,6 @@ DoDhForAll(
   @retval SHELL_INVALID_PARAMETER ProtocolName was NULL or invalid.\r
 **/\r
 SHELL_STATUS\r
-EFIAPI\r
 DoDhByProtocol(\r
   IN CONST CHAR16   *ProtocolName,\r
   IN CONST BOOLEAN  Verbose,\r
@@ -904,7 +887,7 @@ ShellCommandRunDh (
   Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);\r
   if (EFI_ERROR(Status)) {\r
     if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDriver1HiiHandle, ProblemParam);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDriver1HiiHandle, L"dh", ProblemParam);  \r
       FreePool(ProblemParam);\r
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     } else {\r
@@ -912,7 +895,7 @@ ShellCommandRunDh (
     }\r
   } else {\r
     if (ShellCommandLineGetCount(Package) > 2) {\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDriver1HiiHandle);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDriver1HiiHandle, L"dh");  \r
       ShellCommandLineFreeVarList (Package);\r
       return (SHELL_INVALID_PARAMETER);\r
     }\r
@@ -926,7 +909,7 @@ ShellCommandRunDh (
       AsciiSPrint(Language, 10, "en-us");\r
     } else {\r
       ASSERT(Language == NULL);\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDriver1HiiHandle, L"-l");\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDriver1HiiHandle, L"dh",  L"-l");  \r
       ShellCommandLineFreeVarList (Package);\r
       return (SHELL_INVALID_PARAMETER);\r
     }\r
@@ -937,10 +920,10 @@ ShellCommandRunDh (
 \r
     if (ShellCommandLineGetFlag(Package, L"-p")) {\r
       if (ShellCommandLineGetCount(Package) > 1) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDriver1HiiHandle);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDriver1HiiHandle, L"dh");  \r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       } else if (ShellCommandLineGetValue(Package, L"-p") == NULL) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDriver1HiiHandle, L"-p");\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDriver1HiiHandle, L"dh",  L"-p");  \r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       } else {\r
         //\r
@@ -969,7 +952,7 @@ ShellCommandRunDh (
       } else {\r
         Status = ShellConvertStringToUint64(Temp2, &Intermediate, TRUE, FALSE);\r
         if (EFI_ERROR(Status) || ConvertHandleIndexToHandle((UINTN)Intermediate) == NULL) {\r
-          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, Temp2);\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"dh", Temp2);  \r
           ShellStatus = SHELL_INVALID_PARAMETER;\r
         } else {\r
           //\r