]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDriver1CommandsLib/OpenInfo.c
ShellPkg: Updates to 'help' command
[mirror_edk2.git] / ShellPkg / Library / UefiShellDriver1CommandsLib / OpenInfo.c
index b60cc183337c3461becd26f3a566b7209371346c..2922f42d1ec53fa79bfd511547d87f43f9f44a35 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Main file for OpenInfo shell Driver1 function.\r
 \r
-  Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2010 - 2011, 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
@@ -23,6 +23,14 @@ STATIC CONST CHAR16 StringExclusive[] = L"Exclusive";
 STATIC CONST CHAR16 StringDriverEx[]  = L"DriverEx ";\r
 STATIC CONST CHAR16 StringUnknown[]   = L"Unknown  ";\r
 \r
+/**\r
+  Open the database and print out all the info about TheHandle.\r
+\r
+  @param[in] TheHandle      The handle to print info on.\r
+\r
+  @retval EFI_SUCCESS           The operation was successful.\r
+  @retval EFI_INVALID_PARAMETER TheHandle was NULL.\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 TraverseHandleDatabase (\r
@@ -40,8 +48,11 @@ TraverseHandleDatabase (
   CHAR16                              *TempString;\r
   UINTN                               HandleIndex;\r
   CONST CHAR16                        *Name;\r
+  UINTN                               ControllerIndex;\r
 \r
-  ASSERT(TheHandle != NULL);\r
+  if (TheHandle == NULL) {\r
+    return (EFI_INVALID_PARAMETER);\r
+  }\r
 \r
   //\r
   // Retrieve the list of all the protocols on the handle\r
@@ -88,9 +99,10 @@ TraverseHandleDatabase (
                                                         OpenTypeString = StringDriverEx;  break;\r
             default:                                    OpenTypeString = StringUnknown;   break;\r
           }\r
-          HandleIndex = ConvertHandleToHandleIndex(OpenInfo[OpenInfoIndex].AgentHandle);\r
-          Name        = GetStringNameFromHandle(OpenInfo[OpenInfoIndex].AgentHandle, "en");\r
-          if (OpenInfo[OpenInfoIndex].ControllerHandle!=NULL) {\r
+          HandleIndex     = ConvertHandleToHandleIndex(OpenInfo[OpenInfoIndex].AgentHandle);\r
+          Name            = GetStringNameFromHandle(OpenInfo[OpenInfoIndex].AgentHandle, NULL);\r
+          ControllerIndex = ConvertHandleToHandleIndex(OpenInfo[OpenInfoIndex].ControllerHandle);\r
+          if (ControllerIndex != 0) {\r
             ShellPrintHiiEx(\r
               -1,\r
               -1,\r
@@ -98,7 +110,7 @@ TraverseHandleDatabase (
               STRING_TOKEN(STR_OPENINFO_LINE),\r
               gShellDriver1HiiHandle,\r
               HandleIndex,\r
-              ConvertHandleToHandleIndex(OpenInfo[OpenInfoIndex].ControllerHandle),\r
+              ControllerIndex,\r
               OpenInfo[OpenInfoIndex].OpenCount,\r
               OpenTypeString,\r
               Name\r
@@ -145,6 +157,7 @@ ShellCommandRunOpenInfo (
   SHELL_STATUS        ShellStatus;\r
   EFI_HANDLE          TheHandle;\r
   CONST CHAR16        *Param1;\r
+  UINT64              Intermediate;\r
 \r
   ShellStatus         = SHELL_SUCCESS;\r
 \r
@@ -181,13 +194,14 @@ ShellCommandRunOpenInfo (
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     } else {\r
       Param1 = ShellCommandLineGetRawValue(Package, 1);\r
-      if (Param1 == NULL || ConvertHandleIndexToHandle(StrHexToUintn(Param1)) == NULL){\r
+      Status = ShellConvertStringToUint64(Param1, &Intermediate, TRUE, FALSE);\r
+      if (EFI_ERROR(Status) || Param1 == NULL || ConvertHandleIndexToHandle((UINTN)Intermediate) == NULL){\r
         ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, Param1);\r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       } else {\r
-        TheHandle = ConvertHandleIndexToHandle(StrHexToUintn(Param1));\r
+        TheHandle = ConvertHandleIndexToHandle((UINTN)Intermediate);\r
         ASSERT(TheHandle != NULL);\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_OPENINFO_HEADER_LINE), gShellDriver1HiiHandle, StrHexToUintn(Param1), TheHandle);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_OPENINFO_HEADER_LINE), gShellDriver1HiiHandle, (UINTN)Intermediate, TheHandle);\r
 \r
         Status = TraverseHandleDatabase (TheHandle);\r
         if (!EFI_ERROR(Status)) {\r