summaryrefslogtreecommitdiffstats
path: root/ShellPkg/Library/UefiShellLib/UefiShellLib.c
diff options
context:
space:
mode:
authorTapan Shah <tapandshah@hpe.com>2016-09-22 12:12:47 -0700
committerJaben Carsey <jaben.carsey@intel.com>2016-09-22 14:17:24 -0700
commit583448b441650f9a7cb29a320d52db96df81e043 (patch)
tree91c638cab5ae9eaffed9e9b6ba17a161c181e3f7 /ShellPkg/Library/UefiShellLib/UefiShellLib.c
parent38707d76fc8fd07071b1c47c49d116c9445aa619 (diff)
downloadedk2-583448b441650f9a7cb29a320d52db96df81e043.tar.gz
edk2-583448b441650f9a7cb29a320d52db96df81e043.tar.bz2
edk2-583448b441650f9a7cb29a320d52db96df81e043.zip
ShellPkg: Expand special output file to include "NULL" and case insensitive
As per ECR 1349 change in UEFI Shell Specification 2.2, expanding a special output file name to include "NULL". Previously it only supported "NUL" as a special output file and it was case sensitive. With this change both "NUL" and "NULL" are special output file and checked as case insensitive. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Tapan Shah <tapandshah@hpe.com> Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
Diffstat (limited to 'ShellPkg/Library/UefiShellLib/UefiShellLib.c')
-rw-r--r--ShellPkg/Library/UefiShellLib/UefiShellLib.c14
1 files changed, 13 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;