ShellPkg: Fixes and updates for the 'devices' command

- Update 'devices -sfo' format to match UEFI Shell 2.1 spec
- Update help output for easier viewing
- Update 'devices' output format for better alignment when there are many device handles:
     T   D
     Y C I
     P F A
CTRL E G G #P #D #C  Device Name
==== = = = == == === =========================================================

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@15884 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Chris Phillips 2014-08-22 17:00:49 +00:00 committed by jcarsey
parent 83185c5a0e
commit c173a7b9d6
2 changed files with 24 additions and 34 deletions

View File

@ -1,6 +1,7 @@
/** @file /** @file
Main file for devices shell Driver1 function. Main file for devices shell Driver1 function.
(C) Copyright 2012-2014, Hewlett-Packard Development Company, L.P.
Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR> Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
@ -114,6 +115,7 @@ GetDeviceHandleInfo (
} }
STATIC CONST SHELL_PARAM_ITEM ParamList[] = { STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{L"-sfo", TypeFlag},
{L"-l", TypeValue}, {L"-l", TypeValue},
{NULL, TypeMax} {NULL, TypeMax}
}; };
@ -146,9 +148,11 @@ ShellCommandRunDevices (
UINTN Children; UINTN Children;
CHAR16 *Name; CHAR16 *Name;
CONST CHAR16 *Lang; CONST CHAR16 *Lang;
BOOLEAN SfoFlag;
ShellStatus = SHELL_SUCCESS; ShellStatus = SHELL_SUCCESS;
Language = NULL; Language = NULL;
SfoFlag = FALSE;
// //
// initialize the shell lib (we must be in non-auto-init...) // initialize the shell lib (we must be in non-auto-init...)
@ -203,10 +207,13 @@ ShellCommandRunDevices (
// //
// Print Header // Print Header
// only in non SFO mode.
// //
if (!ShellCommandLineGetFlag(Package, L"-sfo")){ if (ShellCommandLineGetFlag (Package, L"-sfo")) {
ShellPrintHiiEx(-1, -1, Language, STRING_TOKEN (STR_DEVICES_HEADER_LINES), gShellDriver1HiiHandle); ShellPrintHiiEx (-1, -1, Language, STRING_TOKEN (STR_GEN_SFO_HEADER), gShellDriver1HiiHandle, L"devices");
SfoFlag = TRUE;
} else {
ShellPrintHiiEx (-1, -1, Language, STRING_TOKEN (STR_DEVICES_HEADER_LINES), gShellDriver1HiiHandle);
} }
// //
@ -225,37 +232,20 @@ ShellCommandRunDevices (
Name = NULL; Name = NULL;
Status = GetDeviceHandleInfo(*HandleListWalker, &Type, &Cfg, &Diag, &Parents, &Devices, &Children, &Name, Language); Status = GetDeviceHandleInfo(*HandleListWalker, &Type, &Cfg, &Diag, &Parents, &Devices, &Children, &Name, Language);
if (Name != NULL && (Parents != 0 || Devices != 0 || Children != 0)) { if (Name != NULL && (Parents != 0 || Devices != 0 || Children != 0)) {
if (!ShellCommandLineGetFlag(Package, L"-sfo")){ ShellPrintHiiEx (
ShellPrintHiiEx(
-1, -1,
-1, -1,
Language, Language,
STRING_TOKEN(STR_DEVICES_ITEM_LINE), SfoFlag?STRING_TOKEN (STR_DEVICES_ITEM_LINE_SFO):STRING_TOKEN (STR_DEVICES_ITEM_LINE),
gShellDriver1HiiHandle, gShellDriver1HiiHandle,
ConvertHandleToHandleIndex(*HandleListWalker), ConvertHandleToHandleIndex (*HandleListWalker),
Type, Type,
Cfg?L'X':L'-', Cfg?(SfoFlag?L'Y':L'X'):(SfoFlag?L'N':L'-'),
Diag?L'X':L'-', Diag?(SfoFlag?L'Y':L'X'):(SfoFlag?L'N':L'-'),
Parents, Parents,
Devices, Devices,
Children, Children,
Name != NULL ? Name : L"<UNKNOWN>"); Name!=NULL?Name:L"<UNKNOWN>");
} else {
ShellPrintHiiEx(
-1,
-1,
Language,
STRING_TOKEN(STR_DEVICES_ITEM_LINE_SFO),
gShellDriver1HiiHandle,
ConvertHandleToHandleIndex(*HandleListWalker),
Type,
Cfg?L'Y':L'N',
Diag?L'Y':L'N',
Parents,
Devices,
Children,
Name != NULL ? Name : L"<UNKNOWN>");
}
} }
if (Name != NULL) { if (Name != NULL) {
FreePool(Name); FreePool(Name);