/** @file\r
Provides interface to shell functionality for shell commands and applications.\r
\r
+ (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
Copyright 2016 Dell Inc.\r
Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
**/\r
\r
#include "UefiShellLib.h"\r
-#include <ShellBase.h>\r
#include <Library/SortLib.h>\r
#include <Library/BaseLib.h>\r
\r
EFI_SHELL_PARAMETERS_PROTOCOL *gEfiShellParametersProtocol;\r
EFI_HANDLE mEfiShellEnvironment2Handle;\r
FILE_HANDLE_FUNCTION_MAP FileFunctionMap;\r
+EFI_UNICODE_COLLATION_PROTOCOL *mUnicodeCollationProtocol;\r
\r
/**\r
Check if a Unicode character is a hexadecimal character.\r
@retval EFI_OUT_OF_RESOURCES Memory allocation failed.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
ShellFindSE2 (\r
IN EFI_HANDLE ImageHandle\r
)\r
@retval EFI_SUCCESS The operationw as successful.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
ShellLibConstructorWorker (\r
IN EFI_HANDLE ImageHandle,\r
IN EFI_SYSTEM_TABLE *SystemTable\r
gEfiShellParametersProtocol = NULL;\r
mEfiShellInterface = NULL;\r
mEfiShellEnvironment2Handle = NULL;\r
+ mUnicodeCollationProtocol = NULL;\r
\r
//\r
// verify that auto initialize is not set false\r
Status = gEfiShellProtocol->OpenFileByName(FileName,\r
FileHandle,\r
OpenMode);\r
- if (StrCmp(FileName, L"NUL") != 0 && !EFI_ERROR(Status) && ((OpenMode & EFI_FILE_MODE_CREATE) != 0)){\r
+ if (EFI_ERROR(Status)) {\r
+ return Status;\r
+ }\r
+\r
+ if (mUnicodeCollationProtocol == NULL) {\r
+ Status = gBS->LocateProtocol (&gEfiUnicodeCollation2ProtocolGuid, NULL, (VOID**)&mUnicodeCollationProtocol);\r
+ if (EFI_ERROR (Status)) {\r
+ gEfiShellProtocol->CloseFile (*FileHandle);\r
+ return Status;\r
+ }\r
+ }\r
+\r
+ if ((mUnicodeCollationProtocol->StriColl (mUnicodeCollationProtocol, (CHAR16*)FileName, L"NUL") != 0) &&\r
+ (mUnicodeCollationProtocol->StriColl (mUnicodeCollationProtocol, (CHAR16*)FileName, L"NULL") != 0) &&\r
+ !EFI_ERROR(Status) && ((OpenMode & EFI_FILE_MODE_CREATE) != 0)){\r
FileInfo = FileFunctionMap.GetFileInfo(*FileHandle);\r
ASSERT(FileInfo != NULL);\r
FileInfo->Attribute = Attributes;\r
@retval the resultant head of the double linked new format list;\r
**/\r
LIST_ENTRY*\r
-EFIAPI\r
InternalShellConvertFileListType (\r
IN LIST_ENTRY *FileList,\r
IN OUT LIST_ENTRY *ListHead\r
@retval FALSE the Parameter was not found. Type is not valid.\r
**/\r
BOOLEAN\r
-EFIAPI\r
InternalIsOnCheckList (\r
IN CONST CHAR16 *Name,\r
IN CONST SHELL_PARAM_ITEM *CheckList,\r
@retval FALSE the Parameter not a flag.\r
**/\r
BOOLEAN\r
-EFIAPI\r
InternalIsFlag (\r
IN CONST CHAR16 *Name,\r
IN CONST BOOLEAN AlwaysAllowNumbers,\r
ProblemParam if provided.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
InternalCommandLineParse (\r
IN CONST SHELL_PARAM_ITEM *CheckList,\r
OUT LIST_ENTRY **CheckPackage,\r
@retval !EFI_SUCCESS The operation failed.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
InternalPrintTo (\r
IN CONST CHAR16 *String\r
)\r
@return EFI_DEVICE_ERROR The console device reported an error.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
InternalShellPrintWorker(\r
IN INT32 Col OPTIONAL,\r
IN INT32 Row OPTIONAL,\r
@retval FALSE There is a non-numeric character.\r
**/\r
BOOLEAN\r
-EFIAPI\r
InternalShellIsHexOrDecimalNumber (\r
IN CONST CHAR16 *String,\r
IN CONST BOOLEAN ForceHex,\r
\r
**/\r
CHAR16\r
-EFIAPI\r
InternalShellCharToUpper (\r
IN CHAR16 Char\r
)\r
\r
**/\r
UINTN\r
-EFIAPI\r
InternalShellHexCharToUintn (\r
IN CHAR16 Char\r
)\r
@retval EFI_DEVICE_ERROR An overflow occured.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
InternalShellStrHexToUint64 (\r
IN CONST CHAR16 *String,\r
OUT UINT64 *Value,\r
@retval EFI_DEVICE_ERROR An overflow occured.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
InternalShellStrDecimalToUint64 (\r
IN CONST CHAR16 *String,\r
OUT UINT64 *Value,\r
@retval EFI_SUCCESS The operation was successful.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
InternalShellStripQuotes (\r
IN CONST CHAR16 *OriginalString,\r
OUT CHAR16 **CleanString\r