/** @file\r
Main file for devices shell Driver1 function.\r
\r
+ (C) Copyright 2012-2015 Hewlett-Packard Development Company, L.P.<BR>\r
Copyright (c) 2010 - 2014, 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
@retval EFI_INVALID_PARAMETER A parameter was invalid.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
GetDeviceHandleInfo (\r
IN EFI_HANDLE TheHandle,\r
IN OUT CHAR16 *Type,\r
}\r
\r
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {\r
+ {L"-sfo", TypeFlag},\r
{L"-l", TypeValue},\r
{NULL, TypeMax}\r
};\r
UINTN Children;\r
CHAR16 *Name;\r
CONST CHAR16 *Lang;\r
+ BOOLEAN SfoFlag;\r
\r
ShellStatus = SHELL_SUCCESS;\r
Language = NULL;\r
+ SfoFlag = FALSE;\r
\r
//\r
// initialize the shell lib (we must be in non-auto-init...)\r
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"devices", ProblemParam); \r
FreePool(ProblemParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
//\r
// error for too many parameters\r
//\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"devices"); \r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
//\r
// 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"devices", L"-l"); \r
ShellCommandLineFreeVarList (Package);\r
return (SHELL_INVALID_PARAMETER);\r
}\r
\r
//\r
// Print Header\r
- // only in non SFO mode.\r
+\r
//\r
- if (!ShellCommandLineGetFlag(Package, L"-sfo")){\r
- ShellPrintHiiEx(-1, -1, Language, STRING_TOKEN (STR_DEVICES_HEADER_LINES), gShellDriver1HiiHandle);\r
+ if (ShellCommandLineGetFlag (Package, L"-sfo")) {\r
+ ShellPrintHiiEx (-1, -1, Language, STRING_TOKEN (STR_GEN_SFO_HEADER), gShellDriver1HiiHandle, L"devices");\r
+ SfoFlag = TRUE;\r
+ } else {\r
+ ShellPrintHiiEx (-1, -1, Language, STRING_TOKEN (STR_DEVICES_HEADER_LINES), gShellDriver1HiiHandle);\r
}\r
\r
//\r
Name = NULL;\r
Status = GetDeviceHandleInfo(*HandleListWalker, &Type, &Cfg, &Diag, &Parents, &Devices, &Children, &Name, Language);\r
if (Name != NULL && (Parents != 0 || Devices != 0 || Children != 0)) {\r
- if (!ShellCommandLineGetFlag(Package, L"-sfo")){\r
- ShellPrintHiiEx(\r
- -1,\r
- -1,\r
- Language,\r
- STRING_TOKEN(STR_DEVICES_ITEM_LINE),\r
- gShellDriver1HiiHandle,\r
- ConvertHandleToHandleIndex(*HandleListWalker),\r
- Type,\r
- Cfg?L'X':L'-',\r
- Diag?L'X':L'-',\r
- Parents,\r
- Devices,\r
- Children,\r
- Name != NULL ? Name : L"<UNKNOWN>");\r
- } else {\r
- ShellPrintHiiEx(\r
- -1,\r
- -1,\r
- Language,\r
- STRING_TOKEN(STR_DEVICES_ITEM_LINE_SFO),\r
- gShellDriver1HiiHandle,\r
- ConvertHandleToHandleIndex(*HandleListWalker),\r
- Type,\r
- Cfg?L'Y':L'N',\r
- Diag?L'Y':L'N',\r
- Parents,\r
- Devices,\r
- Children,\r
- Name != NULL ? Name : L"<UNKNOWN>");\r
- }\r
+ ShellPrintHiiEx (\r
+ -1,\r
+ -1,\r
+ Language,\r
+ SfoFlag?STRING_TOKEN (STR_DEVICES_ITEM_LINE_SFO):STRING_TOKEN (STR_DEVICES_ITEM_LINE),\r
+ gShellDriver1HiiHandle,\r
+ ConvertHandleToHandleIndex (*HandleListWalker),\r
+ Type,\r
+ Cfg?(SfoFlag?L'Y':L'X'):(SfoFlag?L'N':L'-'),\r
+ Diag?(SfoFlag?L'Y':L'X'):(SfoFlag?L'N':L'-'),\r
+ Parents,\r
+ Devices,\r
+ Children,\r
+ Name!=NULL?Name:L"<UNKNOWN>");\r
}\r
if (Name != NULL) {\r
FreePool(Name);\r
}\r
+ if (ShellGetExecutionBreakFlag ()) {\r
+ ShellStatus = SHELL_ABORTED;\r
+ break;\r
+ }\r
+ \r
}\r
\r
if (HandleList != NULL) {\r