Revision: 14950
          http://sourceforge.net/p/edk2/code/14950
Author:   jcarsey
Date:     2013-12-09 22:55:13 +0000 (Mon, 09 Dec 2013)
Log Message:
-----------
ShellPkg: Add support for CTRL-C within shell user prompting

This allows for the user to get out of answering a question with CTRL-C

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jaben Carsey <[email protected]>
Reviewed-by: Erik Bjorge <[email protected]>

Modified Paths:
--------------
    trunk/edk2/ShellPkg/Library/UefiShellLib/UefiShellLib.c

Modified: trunk/edk2/ShellPkg/Library/UefiShellLib/UefiShellLib.c
===================================================================
--- trunk/edk2/ShellPkg/Library/UefiShellLib/UefiShellLib.c     2013-12-09 
03:22:36 UTC (rev 14949)
+++ trunk/edk2/ShellPkg/Library/UefiShellLib/UefiShellLib.c     2013-12-09 
22:55:13 UTC (rev 14950)
@@ -3296,6 +3296,10 @@
       //
       *Resp = ShellPromptResponseMax;
       while (*Resp == ShellPromptResponseMax) {
+        if (ShellGetExecutionBreakFlag()) {
+          Status = EFI_ABORTED;
+          break;
+        }
         gBS->WaitForEvent (1, &gST->ConIn->WaitForKey, &EventIndex);
         Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);
         ASSERT_EFI_ERROR(Status);
@@ -3324,6 +3328,10 @@
       //
       *Resp = ShellPromptResponseMax;
       while (*Resp == ShellPromptResponseMax) {
+        if (ShellGetExecutionBreakFlag()) {
+          Status = EFI_ABORTED;
+          break;
+        }
         gBS->WaitForEvent (1, &gST->ConIn->WaitForKey, &EventIndex);
         Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);
         ASSERT_EFI_ERROR(Status);
@@ -3358,6 +3366,10 @@
       //
       *Resp = ShellPromptResponseMax;
       while (*Resp == ShellPromptResponseMax) {
+        if (ShellGetExecutionBreakFlag()) {
+          Status = EFI_ABORTED;
+          break;
+        }
         gBS->WaitForEvent (1, &gST->ConIn->WaitForKey, &EventIndex);
         if (Type == ShellPromptResponseTypeEnterContinue) {
           Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);
@@ -3385,6 +3397,10 @@
       //
       *Resp = ShellPromptResponseMax;
       while (*Resp == ShellPromptResponseMax) {
+        if (ShellGetExecutionBreakFlag()) {
+          Status = EFI_ABORTED;
+          break;
+        }
         gBS->WaitForEvent (1, &gST->ConIn->WaitForKey, &EventIndex);
         Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);
         ASSERT_EFI_ERROR(Status);
@@ -3406,6 +3422,10 @@
         ShellPrintEx(-1, -1, L"%s", Prompt);
       }
       while(1) {
+        if (ShellGetExecutionBreakFlag()) {
+          Status = EFI_ABORTED;
+          break;
+        }
         gBS->WaitForEvent (1, &gST->ConIn->WaitForKey, &EventIndex);
         Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);
         ASSERT_EFI_ERROR(Status);
@@ -3419,6 +3439,7 @@
       break;
     //
     // This is the location to add new prompt types.
+    // If your new type loops remember to add ExecutionBreak support.
     //
     default:
       ASSERT(FALSE);

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Sponsored by Intel(R) XDK 
Develop, test and display web and hybrid apps with a single code base.
Download it for free now!
http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to