summaryrefslogtreecommitdiffstats
path: root/ShellPkg/Application
diff options
context:
space:
mode:
authorRuiyu Ni <ruiyu.ni@intel.com>2017-11-28 17:06:32 +0800
committerRuiyu Ni <ruiyu.ni@intel.com>2017-11-29 09:07:26 +0800
commit0c83ac57f5c236a70766673ada65fff6b78596d6 (patch)
tree9a5c8e0305c27396a29e68186d44ea1acffc67e1 /ShellPkg/Application
parentdf076c7bab24ac9e68cce8b7874941dbeea3fce1 (diff)
downloadedk2-0c83ac57f5c236a70766673ada65fff6b78596d6.tar.gz
edk2-0c83ac57f5c236a70766673ada65fff6b78596d6.tar.bz2
edk2-0c83ac57f5c236a70766673ada65fff6b78596d6.zip
ShellPkg: Fix the bug that handling Ctrl-C improperly
Current implementation resets the CTRL-C event early when printing the shell prompt, when user types "<CTRL-C>ls<ENTER>", "ls" command is terminated immediately when starts. It's not an expected behavior from users' perspective. Correct way is to reset the CTRL-C event just before running the command, which is a bit later than current point. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
Diffstat (limited to 'ShellPkg/Application')
-rw-r--r--ShellPkg/Application/Shell/Shell.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/ShellPkg/Application/Shell/Shell.c b/ShellPkg/Application/Shell/Shell.c
index 2adc99240c..577e17311b 100644
--- a/ShellPkg/Application/Shell/Shell.c
+++ b/ShellPkg/Application/Shell/Shell.c
@@ -621,11 +621,6 @@ UefiMain (
ShellInfoObject.ConsoleInfo->RowCounter = 0;
//
- // Reset the CTRL-C event (yes we ignore the return values)
- //
- Status = gBS->CheckEvent (ShellInfoObject.NewEfiShellProtocol->ExecutionBreak);
-
- //
// Display Prompt
//
Status = DoShellPrompt();
@@ -1346,9 +1341,14 @@ DoShellPrompt (
// Null terminate the string and parse it
//
if (!EFI_ERROR (Status)) {
+ //
+ // Reset the CTRL-C event just before running the command (yes we ignore the return values)
+ //
+ Status = gBS->CheckEvent (ShellInfoObject.NewEfiShellProtocol->ExecutionBreak);
+
CmdLine[BufferSize / sizeof (CHAR16)] = CHAR_NULL;
Status = RunCommand(CmdLine);
- }
+ }
//
// Done with this command