diff options
author | Ruiyu Ni <ruiyu.ni@intel.com> | 2016-07-18 17:46:59 +0800 |
---|---|---|
committer | Ruiyu Ni <ruiyu.ni@intel.com> | 2016-07-20 10:27:56 +0800 |
commit | 0fcf8d4df85d861b6e721bd1d8abb449f05e15ed (patch) | |
tree | e2b3aecc87e5b034e58528170c1e5210ae22b826 /ShellPkg | |
parent | c0bcd3433f33876c519bf5567e0ab69261b57fe9 (diff) | |
download | edk2-0fcf8d4df85d861b6e721bd1d8abb449f05e15ed.tar.gz edk2-0fcf8d4df85d861b6e721bd1d8abb449f05e15ed.tar.bz2 edk2-0fcf8d4df85d861b6e721bd1d8abb449f05e15ed.zip |
ShellPkg: Add Shell[Get|Set]RawCmdLine to ShellCommandLib
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
Diffstat (limited to 'ShellPkg')
-rw-r--r-- | ShellPkg/Include/Library/ShellCommandLib.h | 23 | ||||
-rw-r--r-- | ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c | 45 |
2 files changed, 68 insertions, 0 deletions
diff --git a/ShellPkg/Include/Library/ShellCommandLib.h b/ShellPkg/Include/Library/ShellCommandLib.h index 5c5e241f15..44eccc447c 100644 --- a/ShellPkg/Include/Library/ShellCommandLib.h +++ b/ShellPkg/Include/Library/ShellCommandLib.h @@ -670,6 +670,29 @@ ShellFileHandleEof( IN SHELL_FILE_HANDLE Handle
);
+/**
+ 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
+ );
+
+/**
+ Function to store the orgignal command string into mOriginalCmdLine.
+
+ @param[in] CmdLine the command line string to store.
+**/
+VOID
+EFIAPI
+ShellSetRawCmdLine (
+ IN CONST CHAR16 *CmdLine
+ );
+
typedef struct {
LIST_ENTRY Link;
void *Buffer;
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',
@@ -1869,6 +1870,50 @@ ShellFileHandleEof( }
/**
+ 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.
@param[in] List The BUFFER_LIST object to free.
|