From a29117bf9e278763dfa6113492eb443be4ab67bc Mon Sep 17 00:00:00 2001 From: Chris Phillips Date: Thu, 21 Aug 2014 20:16:32 +0000 Subject: [PATCH] ShellPkg: Fixes and updates for the 'drivers' command - 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 Reviewed-by: Jaben Carsey git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15870 6f19259b-4bc3-4df7-8a09-765794883524 --- .../UefiShellDriver1CommandsLib/Drivers.c | 55 +++++++++++++----- .../UefiShellDriver1CommandsLib.uni | Bin 70038 -> 67508 bytes 2 files changed, 41 insertions(+), 14 deletions(-) diff --git a/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c b/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c index fe314f70f8..7dff549548 100644 --- a/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c +++ b/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c @@ -1,6 +1,7 @@ /** @file Main file for Drivers shell Driver1 function. + (C) Copyright 2012-2014, Hewlett-Packard Development Company, L.P. Copyright (c) 2010 - 2013, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -14,6 +15,8 @@ #include "UefiShellDriver1CommandsLib.h" +#define MAX_LEN_DRIVER_NAME 35 + STATIC CONST SHELL_PARAM_ITEM ParamList[] = { {L"-sfo", TypeFlag}, {L"-l", TypeValue}, @@ -185,15 +188,19 @@ ShellCommandRunDrivers ( UINTN ChildCount; UINTN DeviceCount; CHAR16 *Temp2; + CONST CHAR16 *FullDriverName; + CHAR16 *TruncatedDriverName; CHAR16 *FormatString; UINT32 DriverVersion; BOOLEAN DriverConfig; BOOLEAN DriverDiag; + BOOLEAN SfoFlag; ShellStatus = SHELL_SUCCESS; Status = EFI_SUCCESS; Language = NULL; FormatString = NULL; + SfoFlag = FALSE; // // initialize the shell lib (we must be in non-auto-init...) @@ -234,10 +241,21 @@ ShellCommandRunDrivers ( } } - if (ShellCommandLineGetFlag(Package, L"-sfo")) { - FormatString = HiiGetString(gShellDriver1HiiHandle, STRING_TOKEN(STR_DRIVERS_ITEM_LINE_SFO), Language); + if (ShellCommandLineGetFlag (Package, L"-sfo")) { + SfoFlag = TRUE; + FormatString = HiiGetString (gShellDriver1HiiHandle, STRING_TOKEN (STR_DRIVERS_ITEM_LINE_SFO), Language); + // + // print the SFO header + // + ShellPrintHiiEx ( + -1, + -1, + Language, + STRING_TOKEN (STR_GEN_SFO_HEADER), + gShellDriver1HiiHandle, + L"drivers"); } else { - FormatString = HiiGetString(gShellDriver1HiiHandle, STRING_TOKEN(STR_DRIVERS_ITEM_LINE), Language); + FormatString = HiiGetString (gShellDriver1HiiHandle, STRING_TOKEN (STR_DRIVERS_ITEM_LINE), Language); // // print the header row // @@ -245,21 +263,27 @@ ShellCommandRunDrivers ( -1, -1, Language, - STRING_TOKEN(STR_DRIVERS_HEADER_LINES), + STRING_TOKEN (STR_DRIVERS_HEADER_LINES), gShellDriver1HiiHandle); } HandleList = GetHandleListByProtocol(&gEfiDriverBindingProtocolGuid); for (HandleWalker = HandleList ; HandleWalker != NULL && *HandleWalker != NULL ; HandleWalker++){ - ChildCount = 0; - DeviceCount = 0; - Status = ParseHandleDatabaseForChildDevices (*HandleWalker, &ChildCount , NULL); - Status = PARSE_HANDLE_DATABASE_DEVICES (*HandleWalker, &DeviceCount, NULL); - Temp2 = GetDevicePathTextForHandle(*HandleWalker); - DriverVersion = ReturnDriverVersion(*HandleWalker); - DriverConfig = ReturnDriverConfig(*HandleWalker); - DriverDiag = ReturnDriverDiag (*HandleWalker); - Lang = GetStringNameFromHandle(*HandleWalker, Language); + ChildCount = 0; + DeviceCount = 0; + Status = ParseHandleDatabaseForChildDevices (*HandleWalker, &ChildCount , NULL); + Status = PARSE_HANDLE_DATABASE_DEVICES (*HandleWalker, &DeviceCount, NULL); + Temp2 = GetDevicePathTextForHandle(*HandleWalker); + DriverVersion = ReturnDriverVersion(*HandleWalker); + DriverConfig = ReturnDriverConfig(*HandleWalker); + DriverDiag = ReturnDriverDiag (*HandleWalker); + FullDriverName = GetStringNameFromHandle(*HandleWalker, Language); + + TruncatedDriverName = NULL; + if (!SfoFlag && (FullDriverName != NULL)) { + TruncatedDriverName = AllocateZeroPool ((MAX_LEN_DRIVER_NAME + 1) * sizeof (CHAR16)); + StrnCpy (TruncatedDriverName, FullDriverName, MAX_LEN_DRIVER_NAME); + } ShellPrintEx( -1, @@ -272,9 +296,12 @@ ShellCommandRunDrivers ( DriverDiag?L'Y':L'N', DeviceCount, ChildCount, - Lang, + SfoFlag?FullDriverName:TruncatedDriverName, Temp2==NULL?L"":Temp2 ); + if (TruncatedDriverName != NULL) { + FreePool (TruncatedDriverName); + } if (Temp2 != NULL) { FreePool(Temp2); } diff --git a/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.uni b/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.uni index a7c787e01ba7005210a8eada846f5c0bdc9d5ad8..5655a4bf2520634fbaefa32c8efe6f2115c401b5 100644 GIT binary patch delta 1884 zcma)7U2Icj7=Fjvj{U$!yRKVD+1X%hEIr+iph#rdPY0W_GPZ7lo5_9(+n{U9IuW9Y zgLtD}xb-1w3~`&9n5cn`!8Qqr#5->gyf86QgC=sJXn+_mOe8+v>DqyTXiiSg_kHjC zJ@4Q1zJ2Qh(}g!p6PmeP8fD9*%kfH$R7theh|X87wu)OcX_kZXq6GOn#z&Vn>5~CD z!rxH|Q0}GV7~i0TB_bnSg{Y?yG|XLudLcPsAng$kZ+m2oWJo2SxK4!9Q5lxOIeplM z+v_xQhwPHQ_}o_S>X0D=Ik=2AVxR?xRwAXC`O6k-S&zCx3wm=i=D)C=%8&0&=ym(B zYI*}SzXexE^D#c1hbpTHx7}9cL{}&GRZ*weEA7&SO1&&ilZ`Z_;eh^ZTAS31Uz+i4 zv<&y6xv4vOUg>e6s-h+~X2K57CC6h%{H2ok>RfG;D6ZGrF;n}s+v zSgRzl=S-=(1d*~>fQgGH{4%%+b&I(;dp0LilX9loBZK0>zD0Y=7TodKcp*)fs2q|o zrWWkRrF%o$5rP{HuRAd@yjkI<`(!VZ)kJGQc00_~gwe3Cy%5)i$MEVi`RHHTgrUO` zOw3r8(_L(}rRX@?T7cgVugBF`Jc98f#GJ99Mz^vU>d~?7$P@pTr}^aonbd^I1$&Ag zldX=_6B0r71s89x#SLeEdbc#l^Tz$^mmS!3JjWJ{mcxw0P2( zJSl=VWJHf1J)b&rp*NIHL5sAKX1kd=jqwe$a4+`UPp||l|C3;u2EiB~hXYQYw&CjH z7(QeMyi0xp7S|~Lv9`lxZiKe`IAJu_GR!%nCde3BTB!2R3j3uUed}zPUa(-SH7~)& zlmK>KF2d}Y)#(~_;%p-m(iIcphL3(?dw_N0y3^jxgeSPwPJ3ZB32{!dCmBdBTauf^ zYLFM`rJElapRIpYF#3m(bVBWjkvI44j}ba}6tH z%1XqDBET%F9#;QH{YJGPV%4QMvBF-Bt)aR~^`7duxlk!?&1T`JP#tQX&i^0X=fDq3 ZwfOX039`<65ctfAyUkC{|9NG)?H|UQ5^w+j delta 4287 zcmcInTTGKz96uluL?BJMT1f1i+Z@+Q6_}!T@=g@NQE9$c|W>lB8;KTCk#Wq!`g3791QnPPX zRi#|24+mD3lTWZ%zHa2GQiGgZ)JlEcp{ms&mfDKpuw^a^PVEM9%(+yH>!?YOj#Ny# z5jmTIqoFMH?`_Bqs)MRq4X8bQ_Ti_dCAhcubxfQr!q9jQc6F~n>WHPnsP9x`#0k6ef`M1 zv>X@r_hM6P0j^yt!NHInUx%FXOlijp*YfdZIAhpOvb7v_9Nj9yS(tTew!6tLqz;jx z?911n7A?Rtd-RC__jmDx2x(MR6bb0_R@E@i-5~z@EqgTla<<1v95;IM@yAUw?q06L zmB`AZUssGqS72w41;JMg?E9*5pLeE?JVwZ!rk5xj2#$= z4jnt63hOyDLfbO%?m;tBcbf72#BzA;Ie1{ROu?&U240p&;MIhC1!;I-&mzoC-gwHS8V$5vHO^G9e}ae{ciS(`MVy0{8+ zL{vX|Ci91BOWEM@NmuMUBH(7V64H|p~TO#mlE{;z!go>9f*+8!a=*w8@>zlPXzVzic zI|&YL*I4K##Srhc>s46iFYZj)&@vpi&rq2gE>7i4$TgXc8+1qt3MG9D5+#f7 z=bJ~Bt5&@;TMVoio?NJLGc=x_vL9#1L{Ha$;@C)=w(~|KImJ?hUmYP&iG}dAo=uIk zLw^G8suS``W>b&yt6E$N7h-5K9U1P@MILerux=c}jmBIeB5}H#mmVcB_-abx6&M0w^&@1>8rr=@Rm&13m(E3_h@EFX0LdTg5E(=os*voF=ayPnIe4aGx=R=)iZH2`e6#o zQ`+U_&uV8lCHn1lv0F-{U$W?l*UwK2hjn(B(w7wBEPhsHlw$VQ^c_P?Jc1)v64WNb zk>sFwDeDjo=jw=H790Jj1f>zvu#4h8i|QSO)=baH5R)VppCF}a3-Vj94t6Pgu^$D@ z?78tz=|WK&s*&lj4}IWYk5ek+?xH}^8|)em;uI-bs6Die;Y>u}sKv!yVQbAdlnncSL`q1YH5+I@N?-JeEN$C_co`&!Op3=EDP((2H`DB!$f%w zO!oBJO5H8_sMl;kk+)bFR_Kzjh1x{esvlM>7{JvGau++QYKB^cvf-Q2)o_mHwN>dB zbT073nbSR(Q1$Ax&CZ(7BU~E_6?q8kBeeA)9dHf!{nAo@m6CG%Y*bq{#W{3q+`8-} z0-z)et1i6DW(ukikhBa^?D=cmI+@K+VY(pCym(azb=eIIvf)n=}|EP6if*U*}+>|V8WWp160=BI8r-|W_jB++>(&oO&Qdbg2l z3nlPy&yb9`GWZfVqN1Oas=1zRuvwyVjt7%7P8l#;=+< zYKX!$wB}Z|mI!cjR1halt_1OwvxyCh?TaacWT2