diff options
Diffstat (limited to 'ShellPkg/Library')
-rw-r--r-- | ShellPkg/Library/UefiShellLib/UefiShellLib.c | 14 | ||||
-rw-r--r-- | ShellPkg/Library/UefiShellLib/UefiShellLib.h | 2 | ||||
-rw-r--r-- | ShellPkg/Library/UefiShellLib/UefiShellLib.inf | 2 |
3 files changed, 17 insertions, 1 deletions
diff --git a/ShellPkg/Library/UefiShellLib/UefiShellLib.c b/ShellPkg/Library/UefiShellLib/UefiShellLib.c index 3dcdba6ba0..e47d5350e0 100644 --- a/ShellPkg/Library/UefiShellLib/UefiShellLib.c +++ b/ShellPkg/Library/UefiShellLib/UefiShellLib.c @@ -1,6 +1,7 @@ /** @file
Provides interface to shell functionality for shell commands and applications.
+ (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
Copyright 2016 Dell Inc.
Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
@@ -36,6 +37,7 @@ EFI_SHELL_PROTOCOL *gEfiShellProtocol; EFI_SHELL_PARAMETERS_PROTOCOL *gEfiShellParametersProtocol;
EFI_HANDLE mEfiShellEnvironment2Handle;
FILE_HANDLE_FUNCTION_MAP FileFunctionMap;
+EFI_UNICODE_COLLATION_PROTOCOL *mUnicodeCollationProtocol;
/**
Check if a Unicode character is a hexadecimal character.
@@ -290,12 +292,19 @@ ShellLibConstructor ( IN EFI_SYSTEM_TABLE *SystemTable
)
{
+ EFI_STATUS Status;
+
mEfiShellEnvironment2 = NULL;
gEfiShellProtocol = NULL;
gEfiShellParametersProtocol = NULL;
mEfiShellInterface = NULL;
mEfiShellEnvironment2Handle = NULL;
+ if (mUnicodeCollationProtocol == NULL) {
+ Status = gBS->LocateProtocol (&gEfiUnicodeCollation2ProtocolGuid, NULL, (VOID**)&mUnicodeCollationProtocol);
+ ASSERT_EFI_ERROR (Status);
+ }
+
//
// verify that auto initialize is not set false
//
@@ -720,7 +729,10 @@ ShellOpenFileByName( Status = gEfiShellProtocol->OpenFileByName(FileName,
FileHandle,
OpenMode);
- if (StrCmp(FileName, L"NUL") != 0 && !EFI_ERROR(Status) && ((OpenMode & EFI_FILE_MODE_CREATE) != 0)){
+
+ if ((mUnicodeCollationProtocol->StriColl (mUnicodeCollationProtocol, (CHAR16*)FileName, L"NUL") != 0) &&
+ (mUnicodeCollationProtocol->StriColl (mUnicodeCollationProtocol, (CHAR16*)FileName, L"NULL") != 0) &&
+ !EFI_ERROR(Status) && ((OpenMode & EFI_FILE_MODE_CREATE) != 0)){
FileInfo = FileFunctionMap.GetFileInfo(*FileHandle);
ASSERT(FileInfo != NULL);
FileInfo->Attribute = Attributes;
diff --git a/ShellPkg/Library/UefiShellLib/UefiShellLib.h b/ShellPkg/Library/UefiShellLib/UefiShellLib.h index 3596f7b011..b323bcf7d7 100644 --- a/ShellPkg/Library/UefiShellLib/UefiShellLib.h +++ b/ShellPkg/Library/UefiShellLib/UefiShellLib.h @@ -1,6 +1,7 @@ /** @file
Provides interface to shell functionality for shell commands and applications.
+ (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -25,6 +26,7 @@ #include <Protocol/EfiShellEnvironment2.h>
#include <Protocol/EfiShell.h>
#include <Protocol/EfiShellParameters.h>
+#include <Protocol/UnicodeCollation.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/BaseLib.h>
diff --git a/ShellPkg/Library/UefiShellLib/UefiShellLib.inf b/ShellPkg/Library/UefiShellLib/UefiShellLib.inf index 782649a7a0..0be682865e 100644 --- a/ShellPkg/Library/UefiShellLib/UefiShellLib.inf +++ b/ShellPkg/Library/UefiShellLib/UefiShellLib.inf @@ -1,6 +1,7 @@ ## @file
# Provides interface to shell functionality for shell commands and applications.
#
+# (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
# Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved. <BR>
#
# This program and the accompanying materials
@@ -51,6 +52,7 @@ [Protocols]
gEfiSimpleFileSystemProtocolGuid ## SOMETIMES_CONSUMES
+ gEfiUnicodeCollation2ProtocolGuid ## CONSUMES
# shell 2.0
gEfiShellProtocolGuid ## SOMETIMES_CONSUMES
|