Member functions of EFI_SHELL_PARAMETERS_PROTOCOL and functions for creation,\r
manipulation, and initialization of EFI_SHELL_PARAMETERS_PROTOCOL.\r
\r
+ (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
Copyright (C) 2014, Red Hat, Inc.\r
(C) Copyright 2013 Hewlett-Packard Development Company, L.P.<BR>\r
- Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2018, 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
@param[in] String the string to parse\r
**/\r
CONST CHAR16*\r
-EFIAPI\r
FindEndOfParameter(\r
IN CONST CHAR16 *String\r
)\r
@return EFI_NOT_FOUND A closing " could not be found on the specified string\r
**/\r
EFI_STATUS\r
-EFIAPI\r
GetNextParameter(\r
IN OUT CHAR16 **Walker,\r
IN OUT CHAR16 **TempParameter,\r
// Remove any non-escaped quotes in the string\r
// Remove any remaining escape characters in the string\r
//\r
- for (NextDelim = FindFirstCharacter(*TempParameter, L"\"^", CHAR_NULL) \r
- ; *NextDelim != CHAR_NULL \r
+ for (NextDelim = FindFirstCharacter(*TempParameter, L"\"^", CHAR_NULL)\r
+ ; *NextDelim != CHAR_NULL\r
; NextDelim = FindFirstCharacter(NextDelim, L"\"^", CHAR_NULL)\r
) {\r
if (*NextDelim == L'^') {\r
//\r
if (StripQuotation) {\r
CopyMem ((CHAR16*)NextDelim, NextDelim + 1, StrSize (NextDelim + 1));\r
- } else{\r
+ } else{\r
NextDelim++;\r
- }\r
+ }\r
}\r
}\r
\r
parameters for inclusion in EFI_SHELL_PARAMETERS_PROTOCOL. this supports space\r
delimited and quote surrounded parameter definition.\r
\r
- All special character processing (alias, environment variable, redirection, \r
+ All special character processing (alias, environment variable, redirection,\r
etc... must be complete before calling this API.\r
\r
@param[in] CommandLine String of command line to parse\r
@return EFI_OUT_OF_RESOURCES a memory allocation failed.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
ParseCommandLineToArgs(\r
IN CONST CHAR16 *CommandLine,\r
IN BOOLEAN StripQuotation,\r
}\r
ASSERT(Count >= (*Argc));\r
Status = EFI_SUCCESS;\r
- \r
+\r
Done:\r
SHELL_FREE_NON_NULL(TempParameter);\r
SHELL_FREE_NON_NULL(NewCommandLine);\r
@sa ParseCommandLineToArgs\r
**/\r
EFI_STATUS\r
-EFIAPI\r
CreatePopulateInstallShellParametersProtocol (\r
IN OUT EFI_SHELL_PARAMETERS_PROTOCOL **NewShellParameters,\r
IN OUT BOOLEAN *RootShellInstance\r
@sa UninstallProtocolInterface\r
**/\r
EFI_STATUS\r
-EFIAPI\r
CleanUpShellParametersProtocol (\r
IN OUT EFI_SHELL_PARAMETERS_PROTOCOL *NewShellParameters\r
)\r
@return An error upon failure.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
IsUnicodeFile(\r
IN CONST CHAR16 *FileName\r
)\r
}\r
gEfiShellProtocol->SetFilePosition(Handle, OriginalFilePosition);\r
gEfiShellProtocol->CloseFile(Handle);\r
- return (Status); \r
+ return (Status);\r
}\r
\r
/**\r
@param[in, out] TheString A pointer to the string to update.\r
**/\r
VOID\r
-EFIAPI\r
StripQuotes (\r
IN OUT CHAR16 *TheString\r
)\r
@return The modified FileName.\r
**/\r
CHAR16*\r
-EFIAPI\r
FixFileName (\r
IN CHAR16 *FileName\r
)\r
Copy = FileName+1;\r
if ((TempLocation = StrStr(Copy , L"\"")) != NULL) {\r
TempLocation[0] = CHAR_NULL;\r
- } \r
+ }\r
} else {\r
Copy = FileName;\r
while(Copy[0] == L' ') {\r
}\r
if ((TempLocation = StrStr(Copy , L" ")) != NULL) {\r
TempLocation[0] = CHAR_NULL;\r
- } \r
+ }\r
}\r
\r
if (Copy[0] == CHAR_NULL) {\r
@return The modified FileName.\r
**/\r
CHAR16*\r
-EFIAPI\r
FixVarName (\r
IN CHAR16 *FileName\r
)\r
Copy = FileName+1;\r
if ((TempLocation = StrStr(Copy , L"%")) != NULL) {\r
TempLocation[0] = CHAR_NULL;\r
- } \r
+ }\r
}\r
\r
return (FixFileName(Copy));\r
/**\r
Remove the unicode file tag from the begining of the file buffer since that will not be\r
used by StdIn.\r
- \r
+\r
@param[in] Handle Pointer to the handle of the file to be processed.\r
- \r
+\r
@retval EFI_SUCCESS The unicode file tag has been moved successfully.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
RemoveFileTag(\r
IN SHELL_FILE_HANDLE *Handle\r
)\r
@retval EFI_OUT_OF_RESOURCES A memory allocation failed.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
UpdateStdInStdOutStdErr(\r
IN OUT EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,\r
IN CHAR16 *NewCommandLine,\r
if (StrStr(CommandLineWalker, L" 1>> ") != NULL) {\r
Status = EFI_NOT_FOUND;\r
}\r
- } \r
+ }\r
if (!EFI_ERROR(Status) && (CommandLineWalker = StrStr(CommandLineCopy, L" >> ")) != NULL) {\r
FirstLocation = MIN(CommandLineWalker, FirstLocation);\r
SetMem16(CommandLineWalker, 8, L' ');\r
if (StrStr(CommandLineWalker, L" >>a ") != NULL) {\r
Status = EFI_NOT_FOUND;\r
}\r
- } \r
+ }\r
if (!EFI_ERROR(Status) && (CommandLineWalker = StrStr(CommandLineCopy, L" 1>a ")) != NULL) {\r
FirstLocation = MIN(CommandLineWalker, FirstLocation);\r
SetMem16(CommandLineWalker, 10, L' ');\r
if (StrStr(CommandLineWalker, L" 1>a ") != NULL) {\r
Status = EFI_NOT_FOUND;\r
}\r
- } \r
+ }\r
if (!EFI_ERROR(Status) && (CommandLineWalker = StrStr(CommandLineCopy, L" >a ")) != NULL) {\r
FirstLocation = MIN(CommandLineWalker, FirstLocation);\r
SetMem16(CommandLineWalker, 8, L' ');\r
StrnCpyS(CommandLineCopy, StrSize(CommandLineCopy)/sizeof(CHAR16), NewCommandLine, StrLen(NewCommandLine));\r
\r
if (FirstLocation != CommandLineCopy + StrLen(CommandLineCopy)\r
- && ((UINTN)(FirstLocation - CommandLineCopy) < StrLen(NewCommandLine))\r
+ && (((UINTN)FirstLocation - (UINTN)CommandLineCopy)/sizeof(CHAR16) < StrLen(NewCommandLine))\r
){\r
- *(NewCommandLine + (UINTN)(FirstLocation - CommandLineCopy)) = CHAR_NULL;\r
+ *(NewCommandLine + ((UINTN)FirstLocation - (UINTN)CommandLineCopy)/sizeof(CHAR16)) = CHAR_NULL;\r
}\r
\r
if (!EFI_ERROR(Status)) {\r
//\r
// Cant redirect during a reconnect operation.\r
//\r
- ||(StrStr(NewCommandLine, L"connect -r") != NULL \r
+ ||(StrStr(NewCommandLine, L"connect -r") != NULL\r
&& (StdOutVarName != NULL || StdOutFileName != NULL || StdErrFileName != NULL || StdErrVarName != NULL))\r
//\r
// Check that filetypes (Unicode/Ascii) do not change during an append\r
if (TempHandle == NULL) {\r
Status = EFI_INVALID_PARAMETER;\r
} else {\r
- if (StrStr(StdOutFileName, L"NUL")==StdOutFileName) {\r
+ if (gUnicodeCollation->MetaiMatch (gUnicodeCollation, StdOutFileName, L"NUL")) {\r
//no-op\r
} else if (!OutAppend && OutUnicode && !EFI_ERROR(Status)) {\r
Status = WriteFileTag (TempHandle);\r
@param[in] SystemTableInfo Pointer to old system table information.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
RestoreStdInStdOutStdErr (\r
IN OUT EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,\r
IN SHELL_FILE_HANDLE *OldStdIn,\r
{\r
SPLIT_LIST *Split;\r
\r
- if (ShellParameters == NULL \r
+ if (ShellParameters == NULL\r
||OldStdIn == NULL\r
||OldStdOut == NULL\r
||OldStdErr == NULL\r
@retval EFI_OUT_OF_RESOURCES A memory allocation failed.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
UpdateArgcArgv(\r
IN OUT EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,\r
IN CONST CHAR16 *NewCommandLine,\r
)\r
{\r
BOOLEAN StripParamQuotation;\r
- \r
+\r
ASSERT(ShellParameters != NULL);\r
StripParamQuotation = TRUE;\r
\r
if (Type == Script_File_Name) {\r
StripParamQuotation = FALSE;\r
}\r
- \r
- return ParseCommandLineToArgs( NewCommandLine, \r
- StripParamQuotation, \r
- &(ShellParameters->Argv), \r
+\r
+ return ParseCommandLineToArgs( NewCommandLine,\r
+ StripParamQuotation,\r
+ &(ShellParameters->Argv),\r
&(ShellParameters->Argc)\r
);\r
}\r
@param[in] OldArgc pointer to old number of items in Argv list\r
**/\r
VOID\r
-EFIAPI\r
RestoreArgcArgv(\r
IN OUT EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,\r
IN CHAR16 ***OldArgv,\r