]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ShellPkg: Fixes and updates for the 'drivers' command
authorChris Phillips <chrisp@hp.com>
Thu, 21 Aug 2014 20:16:32 +0000 (20:16 +0000)
committerjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 21 Aug 2014 20:16:32 +0000 (20:16 +0000)
- Update 'drivers -sfo' format to match UEFI Shell 2.1 spec
- Update help output for easier viewing
- Update 'drivers' output format for better alignment
             T   D
             Y C I
             P F A
DRV VERSION  E G G #D  #C  DRIVER NAME                         IMAGE PATH
=== ======== = = = === === =================================== ==========

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chris Phillips <chrisp@hp.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15870 6f19259b-4bc3-4df7-8a09-765794883524

ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c
ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.uni

index fe314f70f8f1a47f2d9af3a08ae3e418469ec242..7dff549548fdc6443f20f815d3e0940270148cbb 100644 (file)
@@ -1,6 +1,7 @@
 /** @file\r
   Main file for Drivers shell Driver1 function.\r
 \r
+  (C) Copyright 2012-2014, Hewlett-Packard Development Company, L.P.\r
   Copyright (c) 2010 - 2013, 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
@@ -14,6 +15,8 @@
 \r
 #include "UefiShellDriver1CommandsLib.h"\r
 \r
+#define MAX_LEN_DRIVER_NAME 35\r
+\r
 STATIC CONST SHELL_PARAM_ITEM ParamList[] = {\r
   {L"-sfo", TypeFlag},\r
   {L"-l", TypeValue},\r
@@ -185,15 +188,19 @@ ShellCommandRunDrivers (
   UINTN               ChildCount;\r
   UINTN               DeviceCount;\r
   CHAR16              *Temp2;\r
+  CONST CHAR16        *FullDriverName;\r
+  CHAR16              *TruncatedDriverName;\r
   CHAR16              *FormatString;\r
   UINT32              DriverVersion;\r
   BOOLEAN             DriverConfig;\r
   BOOLEAN             DriverDiag;\r
+  BOOLEAN             SfoFlag;\r
 \r
   ShellStatus         = SHELL_SUCCESS;\r
   Status              = EFI_SUCCESS;\r
   Language            = NULL;\r
   FormatString        = NULL;\r
+  SfoFlag             = FALSE;\r
 \r
   //\r
   // initialize the shell lib (we must be in non-auto-init...)\r
@@ -234,10 +241,21 @@ ShellCommandRunDrivers (
         }\r
       }\r
 \r
-      if (ShellCommandLineGetFlag(Package, L"-sfo")) {\r
-        FormatString = HiiGetString(gShellDriver1HiiHandle, STRING_TOKEN(STR_DRIVERS_ITEM_LINE_SFO), Language);\r
+      if (ShellCommandLineGetFlag (Package, L"-sfo")) {\r
+        SfoFlag = TRUE;\r
+        FormatString = HiiGetString (gShellDriver1HiiHandle, STRING_TOKEN (STR_DRIVERS_ITEM_LINE_SFO), Language);\r
+        //\r
+        // print the SFO header\r
+        //\r
+        ShellPrintHiiEx (\r
+          -1,\r
+          -1,\r
+          Language,\r
+          STRING_TOKEN (STR_GEN_SFO_HEADER),\r
+          gShellDriver1HiiHandle,\r
+          L"drivers");\r
       } else {\r
-        FormatString = HiiGetString(gShellDriver1HiiHandle, STRING_TOKEN(STR_DRIVERS_ITEM_LINE), Language);\r
+        FormatString = HiiGetString (gShellDriver1HiiHandle, STRING_TOKEN (STR_DRIVERS_ITEM_LINE), Language);\r
         //\r
         // print the header row\r
         //\r
@@ -245,21 +263,27 @@ ShellCommandRunDrivers (
           -1,\r
           -1,\r
           Language,\r
-          STRING_TOKEN(STR_DRIVERS_HEADER_LINES),\r
+          STRING_TOKEN (STR_DRIVERS_HEADER_LINES),\r
           gShellDriver1HiiHandle);\r
       }\r
 \r
       HandleList = GetHandleListByProtocol(&gEfiDriverBindingProtocolGuid);\r
       for (HandleWalker = HandleList ; HandleWalker != NULL && *HandleWalker != NULL ; HandleWalker++){\r
-        ChildCount    = 0;\r
-        DeviceCount   = 0;\r
-        Status        = ParseHandleDatabaseForChildDevices (*HandleWalker, &ChildCount , NULL);\r
-        Status        = PARSE_HANDLE_DATABASE_DEVICES      (*HandleWalker, &DeviceCount, NULL);\r
-        Temp2         = GetDevicePathTextForHandle(*HandleWalker);\r
-        DriverVersion = ReturnDriverVersion(*HandleWalker);\r
-        DriverConfig  = ReturnDriverConfig(*HandleWalker);\r
-        DriverDiag    = ReturnDriverDiag  (*HandleWalker);\r
-        Lang          = GetStringNameFromHandle(*HandleWalker, Language);\r
+        ChildCount     = 0;\r
+        DeviceCount    = 0;\r
+        Status         = ParseHandleDatabaseForChildDevices (*HandleWalker, &ChildCount , NULL);\r
+        Status         = PARSE_HANDLE_DATABASE_DEVICES      (*HandleWalker, &DeviceCount, NULL);\r
+        Temp2          = GetDevicePathTextForHandle(*HandleWalker);\r
+        DriverVersion  = ReturnDriverVersion(*HandleWalker);\r
+        DriverConfig   = ReturnDriverConfig(*HandleWalker);\r
+        DriverDiag     = ReturnDriverDiag  (*HandleWalker);\r
+        FullDriverName = GetStringNameFromHandle(*HandleWalker, Language);\r
+\r
+        TruncatedDriverName = NULL;\r
+        if (!SfoFlag && (FullDriverName != NULL)) {\r
+          TruncatedDriverName = AllocateZeroPool ((MAX_LEN_DRIVER_NAME + 1) * sizeof (CHAR16));\r
+          StrnCpy (TruncatedDriverName, FullDriverName, MAX_LEN_DRIVER_NAME);\r
+        }\r
 \r
         ShellPrintEx(\r
           -1,\r
@@ -272,9 +296,12 @@ ShellCommandRunDrivers (
           DriverDiag?L'Y':L'N',\r
           DeviceCount,\r
           ChildCount,\r
-          Lang,\r
+          SfoFlag?FullDriverName:TruncatedDriverName,\r
           Temp2==NULL?L"":Temp2\r
          );\r
+        if (TruncatedDriverName != NULL) {\r
+          FreePool (TruncatedDriverName);\r
+        }\r
         if (Temp2 != NULL) {\r
           FreePool(Temp2);\r
         }\r
index a7c787e01ba7005210a8eada846f5c0bdc9d5ad8..5655a4bf2520634fbaefa32c8efe6f2115c401b5 100644 (file)
Binary files a/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.uni and b/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.uni differ