From 0fcf8d4df85d861b6e721bd1d8abb449f05e15ed Mon Sep 17 00:00:00 2001 From: Ruiyu Ni Date: Mon, 18 Jul 2016 17:46:59 +0800 Subject: ShellPkg: Add Shell[Get|Set]RawCmdLine to ShellCommandLib Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni Reviewed-by: Jaben Carsey --- .../UefiShellCommandLib/UefiShellCommandLib.c | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'ShellPkg/Library') diff --git a/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c b/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c index ac77111ef9..7fe908cb57 100644 --- a/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c +++ b/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c @@ -30,6 +30,7 @@ STATIC UINTN mProfileListSize; STATIC UINTN mFsMaxCount = 0; STATIC UINTN mBlkMaxCount = 0; STATIC BUFFER_LIST mFileHandleList; +STATIC CHAR16 *mRawCmdLine = NULL; STATIC CONST CHAR8 Hex[] = { '0', @@ -1868,6 +1869,50 @@ ShellFileHandleEof( return (RetVal); } +/** + Function to get the original CmdLine string for current command. + + @return A pointer to the buffer of the original command string. + It's the caller's responsibility to free the buffer. +**/ +CHAR16* +EFIAPI +ShellGetRawCmdLine ( + VOID + ) +{ + if (mRawCmdLine == NULL) { + return NULL; + } else { + return AllocateCopyPool(StrSize(mRawCmdLine), mRawCmdLine); + } +} + +/** + Function to store the raw command string. + + The alias and variables have been replaced and spaces are trimmed. + + @param[in] CmdLine the command line string to store. +**/ +VOID +EFIAPI +ShellSetRawCmdLine ( + IN CONST CHAR16 *CmdLine + ) +{ + SHELL_FREE_NON_NULL(mRawCmdLine); + + if (CmdLine != NULL) { + // + // The spaces in the beginning and end are trimmed. + // + ASSERT (*CmdLine != L' '); + ASSERT (CmdLine[StrLen (CmdLine) - 1] != L' '); + mRawCmdLine = AllocateCopyPool (StrSize(CmdLine), CmdLine); + } +} + /** Frees any BUFFER_LIST defined type. -- cgit v1.2.3