/** @file\r
Main file for Dh shell Driver1 function.\r
\r
- Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>\r
+ (C) Copyright 2014-2015 Hewlett-Packard Development Company, L.P.<BR>\r
+ Copyright (c) 2010 - 2017, 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
which accompanies this distribution. The full text of the license may be found at\r
@retval EFI_SUCCESS The name was found.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
GetDriverName (\r
IN EFI_HANDLE TheHandle,\r
IN CONST CHAR8 *Language,\r
)\r
{\r
CHAR8 *Lang;\r
- CHAR8 *TempChar;\r
EFI_STATUS Status;\r
EFI_COMPONENT_NAME2_PROTOCOL *CompName2;\r
CHAR16 *NameToReturn;\r
if (EFI_ERROR(Status)) {\r
return (EFI_NOT_FOUND);\r
}\r
- if (Language == NULL) {\r
- Lang = AllocateZeroPool(AsciiStrSize(CompName2->SupportedLanguages));\r
- if (Lang == NULL) {\r
- return (EFI_OUT_OF_RESOURCES);\r
- }\r
- AsciiStrCpy(Lang, CompName2->SupportedLanguages);\r
- TempChar = AsciiStrStr(Lang, ";");\r
- if (TempChar != NULL){\r
- *TempChar = CHAR_NULL;\r
- }\r
- } else {\r
- Lang = AllocateZeroPool(AsciiStrSize(Language));\r
- if (Lang == NULL) {\r
- return (EFI_OUT_OF_RESOURCES);\r
- }\r
- AsciiStrCpy(Lang, Language);\r
- }\r
+ Lang = GetBestLanguageForDriver (CompName2->SupportedLanguages, Language, FALSE);\r
Status = CompName2->GetDriverName(CompName2, Lang, &NameToReturn);\r
FreePool(Lang);\r
\r
@retval FALSE The guid does not represent a driver model protocol.\r
**/\r
BOOLEAN\r
-EFIAPI\r
IsDriverProt (\r
IN CONST EFI_GUID *Guid\r
)\r
\r
@param[in] TheHandle The handles to show info on.\r
@param[in] Language Language string per UEFI specification.\r
- @param[in] Seperator Separator string between information blocks.\r
+ @param[in] Separator Separator string between information blocks.\r
@param[in] Verbose TRUE for extra info, FALSE otherwise.\r
@param[in] ExtraInfo TRUE for extra info, FALSE otherwise.\r
\r
@retval SHELL_INVALID_PARAMETER ProtocolName was NULL or invalid.\r
**/\r
CHAR16*\r
-EFIAPI\r
GetProtocolInfoString(\r
IN CONST EFI_HANDLE TheHandle,\r
IN CONST CHAR8 *Language,\r
- IN CONST CHAR16 *Seperator,\r
+ IN CONST CHAR16 *Separator,\r
IN CONST BOOLEAN Verbose,\r
IN CONST BOOLEAN ExtraInfo\r
)\r
CHAR16 *RetVal;\r
UINTN Size;\r
CHAR16 *Temp;\r
+ CHAR16 GuidStr[40];\r
\r
ProtocolGuidArray = NULL;\r
RetVal = NULL;\r
if (!EFI_ERROR (Status)) {\r
for (ProtocolIndex = 0; ProtocolIndex < ArrayCount; ProtocolIndex++) {\r
Temp = GetStringNameFromGuid(ProtocolGuidArray[ProtocolIndex], Language);\r
- if (Temp != NULL) {\r
- ASSERT((RetVal == NULL && Size == 0) || (RetVal != NULL));\r
- if (Size != 0) {\r
- StrnCatGrow(&RetVal, &Size, Seperator, 0);\r
- }\r
- StrnCatGrow(&RetVal, &Size, L"%H", 0);\r
+ ASSERT((RetVal == NULL && Size == 0) || (RetVal != NULL));\r
+ if (Size != 0) {\r
+ StrnCatGrow(&RetVal, &Size, Separator, 0);\r
+ }\r
+ StrnCatGrow(&RetVal, &Size, L"%H", 0);\r
+ if (Temp == NULL) {\r
+ UnicodeSPrint (GuidStr, sizeof (GuidStr), L"%g", ProtocolGuidArray[ProtocolIndex]);\r
+ StrnCatGrow (&RetVal, &Size, GuidStr, 0);\r
+ } else {\r
StrnCatGrow(&RetVal, &Size, Temp, 0);\r
- StrnCatGrow(&RetVal, &Size, L"%N", 0);\r
FreePool(Temp);\r
}\r
+ StrnCatGrow(&RetVal, &Size, L"%N", 0);\r
if (ExtraInfo) {\r
Temp = GetProtocolInformationDump(TheHandle, ProtocolGuidArray[ProtocolIndex], Verbose);\r
if (Temp != NULL) {\r
StrnCatGrow(&RetVal, &Size, Temp, 0);\r
StrnCatGrow(&RetVal, &Size, L")\r\n", 0);\r
} else {\r
- StrnCatGrow(&RetVal, &Size, Seperator, 0);\r
+ StrnCatGrow(&RetVal, &Size, Separator, 0);\r
StrnCatGrow(&RetVal, &Size, Temp, 0);\r
}\r
FreePool(Temp);\r
}\r
\r
ASSERT((RetVal == NULL && Size == 0) || (RetVal != NULL));\r
- StrnCatGrow(&RetVal, &Size, Seperator, 0);\r
+ StrnCatGrow(&RetVal, &Size, Separator, 0);\r
return (RetVal);\r
}\r
\r
@retval EFI_SUCCESS The operation was successful.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
GetDriverImageName (\r
IN EFI_HANDLE TheHandle,\r
OUT CHAR16 **Name\r
return (Status);\r
}\r
DevicePath = LoadedImage->FilePath;\r
- *Name = gDevPathToText->ConvertDevicePathToText(DevicePath, TRUE, TRUE);\r
+ *Name = ConvertDevicePathToText(DevicePath, TRUE, TRUE);\r
return (EFI_SUCCESS);\r
}\r
\r
@param[in] Language The language to output in.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
DisplayDriverModelHandle (\r
IN EFI_HANDLE Handle,\r
IN BOOLEAN BestName,\r
UINTN ChildIndex;\r
BOOLEAN Image;\r
\r
+ DriverName = NULL;\r
+\r
//\r
// See if Handle is a device handle and display its details.\r
//\r
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DH_OUTPUT_DRIVER1), gShellDriver1HiiHandle, TempStringPointer!=NULL?TempStringPointer:L"<Unknown>");\r
SHELL_FREE_NON_NULL(TempStringPointer);\r
\r
- TempStringPointer = gDevPathToText->ConvertDevicePathToText(DevicePath, TRUE, FALSE);\r
+ TempStringPointer = ConvertDevicePathToText(DevicePath, TRUE, FALSE);\r
ShellPrintHiiEx(\r
-1, \r
-1, \r
Language,\r
&DriverName\r
);\r
- if (DriverName == NULL) {\r
+ if (EFI_ERROR (Status)) {\r
Status = GetDriverImageName (\r
DriverBindingHandleBuffer[Index],\r
&DriverName\r
);\r
+ if (EFI_ERROR (Status)) {\r
+ DriverName = NULL;\r
+ }\r
}\r
\r
if (Image) {\r
}\r
\r
Status = GetDriverName (Handle, Language, &DriverName);\r
+ if (EFI_ERROR (Status)) {\r
+ DriverName = NULL;\r
+ }\r
\r
ShellPrintHiiEx(\r
-1, \r
DriverName!=NULL?DriverName:L"<Unknown>"\r
);\r
SHELL_FREE_NON_NULL(DriverName);\r
- DriverName = NULL;\r
Status = GetDriverImageName (\r
Handle,\r
&DriverName\r
);\r
+ if (EFI_ERROR (Status)) {\r
+ DriverName = NULL;\r
+ }\r
ShellPrintHiiEx(\r
-1, \r
-1, \r
@param[in] DriverInfo TRUE to show all info about the handle.\r
@param[in] Multiple TRUE indicates more than will be output,\r
FALSE for a single one.\r
-\r
- @retval SHELL_SUCCESS The operation was successful.\r
- @retval SHELL_INVALID_PARAMETER ProtocolName was NULL or invalid.\r
**/\r
-SHELL_STATUS\r
-EFIAPI\r
+VOID\r
DoDhByHandle(\r
IN CONST EFI_HANDLE TheHandle,\r
IN CONST BOOLEAN Verbose,\r
IN CONST BOOLEAN Multiple\r
)\r
{\r
- CHAR16 *ProtocolInfoString;\r
- SHELL_STATUS ShellStatus;\r
- EFI_STATUS Status;\r
+ CHAR16 *ProtocolInfoString;\r
\r
- Status = EFI_SUCCESS;\r
- ShellStatus = SHELL_SUCCESS;\r
ProtocolInfoString = NULL;\r
\r
if (!Sfo) {\r
STRING_TOKEN (STR_DH_OUTPUT),\r
gShellDriver1HiiHandle,\r
ConvertHandleToHandleIndex(TheHandle),\r
- ProtocolInfoString==NULL?L"":ProtocolInfoString);\r
+ ProtocolInfoString==NULL?L"":ProtocolInfoString\r
+ );\r
} else {\r
ProtocolInfoString = GetProtocolInfoString(TheHandle, Language, L"\r\n", Verbose, TRUE);\r
ShellPrintHiiEx(\r
gShellDriver1HiiHandle,\r
ConvertHandleToHandleIndex(TheHandle),\r
TheHandle,\r
- ProtocolInfoString==NULL?L"":ProtocolInfoString);\r
+ ProtocolInfoString==NULL?L"":ProtocolInfoString\r
+ );\r
}\r
\r
if (DriverInfo) {\r
L"ControllerName",\r
ConvertHandleToHandleIndex(TheHandle),\r
L"DevPath",\r
- ProtocolInfoString==NULL?L"":ProtocolInfoString);\r
-\r
-\r
+ ProtocolInfoString==NULL?L"":ProtocolInfoString\r
+ );\r
}\r
\r
-\r
if (ProtocolInfoString != NULL) {\r
FreePool(ProtocolInfoString);\r
}\r
- return (ShellStatus);\r
}\r
\r
/**\r
@param[in] Language Language string per UEFI specification.\r
@param[in] DriverInfo TRUE to show all info about the handle.\r
\r
- @retval SHELL_SUCCESS The operation was successful.\r
- @retval SHELL_INVALID_PARAMETER ProtocolName was NULL or invalid.\r
+ @retval SHELL_SUCCESS The operation was successful.\r
+ @retval SHELL_ABORTED The operation was aborted.\r
**/\r
SHELL_STATUS\r
-EFIAPI\r
DoDhForHandleList(\r
IN CONST EFI_HANDLE *HandleList,\r
IN CONST BOOLEAN Verbose,\r
\r
ShellStatus = SHELL_SUCCESS;\r
\r
- for (HandleWalker = HandleList ; HandleWalker != NULL && *HandleWalker != NULL && ShellStatus == SHELL_SUCCESS; HandleWalker++) {\r
- ShellStatus = DoDhByHandle(\r
- *HandleWalker,\r
- Verbose,\r
- Sfo,\r
- Language,\r
- DriverInfo,\r
- TRUE\r
- );\r
+ for ( HandleWalker = HandleList; HandleWalker != NULL && *HandleWalker != NULL; HandleWalker++ ) {\r
+ DoDhByHandle (*HandleWalker, Verbose, Sfo, Language, DriverInfo, TRUE);\r
+ if (ShellGetExecutionBreakFlag ()) {\r
+ ShellStatus = SHELL_ABORTED;\r
+ break;\r
+ }\r
}\r
return (ShellStatus);\r
}\r
@retval SHELL_INVALID_PARAMETER ProtocolName was NULL or invalid.\r
**/\r
SHELL_STATUS\r
-EFIAPI\r
DoDhForAll(\r
IN CONST BOOLEAN Sfo,\r
IN CONST BOOLEAN Verbose,\r
@retval SHELL_INVALID_PARAMETER ProtocolName was NULL or invalid.\r
**/\r
SHELL_STATUS\r
-EFIAPI\r
DoDhByProtocol(\r
IN CONST CHAR16 *ProtocolName,\r
IN CONST BOOLEAN Verbose,\r
SHELL_STATUS ShellStatus;\r
CHAR8 *Language;\r
CONST CHAR16 *Lang;\r
- CONST CHAR16 *Temp2;\r
- BOOLEAN SfoMode;\r
- BOOLEAN FlagD;\r
- BOOLEAN Verbose;\r
+ CONST CHAR16 *RawValue;\r
+ BOOLEAN SfoFlag;\r
+ BOOLEAN DriverFlag;\r
+ BOOLEAN VerboseFlag;\r
UINT64 Intermediate;\r
\r
ShellStatus = SHELL_SUCCESS;\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"dh", ProblemParam); \r
FreePool(ProblemParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
}\r
} else {\r
if (ShellCommandLineGetCount(Package) > 2) {\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"dh"); \r
ShellCommandLineFreeVarList (Package);\r
return (SHELL_INVALID_PARAMETER);\r
}\r
\r
- Lang = ShellCommandLineGetValue(Package, L"-l");\r
- if (Lang != NULL) {\r
- Language = AllocateZeroPool(StrSize(Lang));\r
- AsciiSPrint(Language, StrSize(Lang), "%S", Lang);\r
- } else if (!ShellCommandLineGetFlag(Package, L"-l")){\r
+ if (ShellCommandLineGetFlag(Package, L"-l")) {\r
+ Lang = ShellCommandLineGetValue(Package, L"-l");\r
+ if (Lang != NULL) {\r
+ Language = AllocateZeroPool(StrSize(Lang));\r
+ AsciiSPrint(Language, StrSize(Lang), "%S", Lang);\r
+ } else {\r
+ ASSERT(Language == NULL);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN(STR_GEN_NO_VALUE), gShellDriver1HiiHandle, L"dh", L"-l");\r
+ ShellCommandLineFreeVarList(Package);\r
+ return (SHELL_INVALID_PARAMETER);\r
+ }\r
+ } else {\r
Language = AllocateZeroPool(10);\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
- ShellCommandLineFreeVarList (Package);\r
- return (SHELL_INVALID_PARAMETER);\r
}\r
\r
- SfoMode = ShellCommandLineGetFlag(Package, L"-sfo");\r
- FlagD = ShellCommandLineGetFlag(Package, L"-d");\r
- Verbose = (BOOLEAN)(ShellCommandLineGetFlag(Package, L"-v") || ShellCommandLineGetFlag(Package, L"-verbose"));\r
+ SfoFlag = ShellCommandLineGetFlag (Package, L"-sfo");\r
+ DriverFlag = ShellCommandLineGetFlag (Package, L"-d");\r
+ VerboseFlag = (BOOLEAN)(ShellCommandLineGetFlag (Package, L"-v") || ShellCommandLineGetFlag (Package, L"-verbose"));\r
\r
- if (ShellCommandLineGetFlag(Package, L"-p")) {\r
- if (ShellCommandLineGetCount(Package) > 1) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDriver1HiiHandle);\r
+ if (ShellCommandLineGetFlag (Package, L"-p")) {\r
+ if (ShellCommandLineGetCount (Package) > 1) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDriver1HiiHandle, L"dh");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else if (ShellCommandLineGetValue(Package, L"-p") == NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDriver1HiiHandle, L"-p");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDriver1HiiHandle, L"dh", L"-p");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
//\r
//\r
ShellStatus = DoDhByProtocol(\r
ShellCommandLineGetValue(Package, L"-p"),\r
- Verbose,\r
- SfoMode,\r
- Lang==NULL?NULL:Language,\r
- FlagD\r
- );\r
+ VerboseFlag,\r
+ SfoFlag,\r
+ Language,\r
+ DriverFlag\r
+ );\r
}\r
} else {\r
- Temp2 = ShellCommandLineGetRawValue(Package, 1);\r
- if (Temp2 == NULL) {\r
+ RawValue = ShellCommandLineGetRawValue(Package, 1);\r
+ if (RawValue == NULL) {\r
//\r
// Print everything\r
//\r
ShellStatus = DoDhForAll(\r
- SfoMode,\r
- Verbose,\r
- Lang==NULL?NULL:Language,\r
- FlagD\r
+ SfoFlag,\r
+ VerboseFlag,\r
+ Language,\r
+ DriverFlag\r
);\r
} else {\r
- Status = ShellConvertStringToUint64(Temp2, &Intermediate, TRUE, FALSE);\r
+ Status = ShellConvertStringToUint64(RawValue, &Intermediate, TRUE, FALSE);\r
if (EFI_ERROR(Status) || ConvertHandleIndexToHandle((UINTN)Intermediate) == NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, Temp2);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"dh", RawValue);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
//\r
// print 1 handle\r
//\r
- ShellStatus = DoDhByHandle(\r
+ DoDhByHandle(\r
ConvertHandleIndexToHandle((UINTN)Intermediate),\r
- Verbose,\r
- SfoMode,\r
- Lang==NULL?NULL:Language,\r
- FlagD,\r
+ VerboseFlag,\r
+ SfoFlag,\r
+ Language,\r
+ DriverFlag,\r
FALSE\r
- );\r
+ );\r
}\r
}\r
}\r