ShellPkg: Move UnicodeCollation2 Protcol locate out of UefiShellLib constructor

Move gEfiUnicodeCollation2ProtocolGuid protocol outside of UefiShellLib constructor
function.
Locate gEfiUnicodeCollation2ProtocolGuid protocol in ShellOpenFileByName() which
consumes this protocol API.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Tapan Shah <tapandshah@hpe.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
This commit is contained in:
Tapan Shah 2016-10-05 13:58:05 -07:00 committed by Jaben Carsey
parent c0b7e2b2bf
commit 2cf9ecd226
1 changed files with 9 additions and 7 deletions

View File

@ -292,18 +292,12 @@ ShellLibConstructor (
IN EFI_SYSTEM_TABLE *SystemTable IN EFI_SYSTEM_TABLE *SystemTable
) )
{ {
EFI_STATUS Status;
mEfiShellEnvironment2 = NULL; mEfiShellEnvironment2 = NULL;
gEfiShellProtocol = NULL; gEfiShellProtocol = NULL;
gEfiShellParametersProtocol = NULL; gEfiShellParametersProtocol = NULL;
mEfiShellInterface = NULL; mEfiShellInterface = NULL;
mEfiShellEnvironment2Handle = NULL; mEfiShellEnvironment2Handle = NULL;
mUnicodeCollationProtocol = NULL;
if (mUnicodeCollationProtocol == NULL) {
Status = gBS->LocateProtocol (&gEfiUnicodeCollation2ProtocolGuid, NULL, (VOID**)&mUnicodeCollationProtocol);
ASSERT_EFI_ERROR (Status);
}
// //
// verify that auto initialize is not set false // verify that auto initialize is not set false
@ -730,6 +724,14 @@ ShellOpenFileByName(
FileHandle, FileHandle,
OpenMode); OpenMode);
if (mUnicodeCollationProtocol == NULL) {
Status = gBS->LocateProtocol (&gEfiUnicodeCollation2ProtocolGuid, NULL, (VOID**)&mUnicodeCollationProtocol);
if (EFI_ERROR (Status)) {
gEfiShellProtocol->CloseFile (*FileHandle);
return Status;
}
}
if ((mUnicodeCollationProtocol->StriColl (mUnicodeCollationProtocol, (CHAR16*)FileName, L"NUL") != 0) && if ((mUnicodeCollationProtocol->StriColl (mUnicodeCollationProtocol, (CHAR16*)FileName, L"NUL") != 0) &&
(mUnicodeCollationProtocol->StriColl (mUnicodeCollationProtocol, (CHAR16*)FileName, L"NULL") != 0) && (mUnicodeCollationProtocol->StriColl (mUnicodeCollationProtocol, (CHAR16*)FileName, L"NULL") != 0) &&
!EFI_ERROR(Status) && ((OpenMode & EFI_FILE_MODE_CREATE) != 0)){ !EFI_ERROR(Status) && ((OpenMode & EFI_FILE_MODE_CREATE) != 0)){