/** @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
\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
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
}\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
-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
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