From 238ce9d97e40fa42734f1d4c6d2adfd28e84f6d5 Mon Sep 17 00:00:00 2001 From: Matt Wrock Date: Tue, 18 Jul 2017 14:32:34 -0700 Subject: [PATCH] if running noninteractively then do not break into debugger on ctrl + break Signed-off-by: Matt Wrock --- .../host/msh/ConsoleHost.cs | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/Microsoft.PowerShell.ConsoleHost/host/msh/ConsoleHost.cs b/src/Microsoft.PowerShell.ConsoleHost/host/msh/ConsoleHost.cs index f26a82d37..c16bd4816 100644 --- a/src/Microsoft.PowerShell.ConsoleHost/host/msh/ConsoleHost.cs +++ b/src/Microsoft.PowerShell.ConsoleHost/host/msh/ConsoleHost.cs @@ -304,11 +304,19 @@ namespace Microsoft.PowerShell switch (args.SpecialKey) { case ConsoleSpecialKey.ControlC: - SpinUpBreakHandlerThread(false); + SpinUpBreakHandlerThread(shouldEndSession: false); return; case ConsoleSpecialKey.ControlBreak: - // Break into script debugger. - BreakIntoDebugger(); + if (s_cpp.NonInteractive) + { + //ControlBreak mimics ControlC in Noninteractive shells + SpinUpBreakHandlerThread(shouldEndSession: true); + } + else + { + // Break into script debugger. + BreakIntoDebugger(); + } return; } } @@ -325,13 +333,21 @@ namespace Microsoft.PowerShell switch (signal) { case ConsoleControl.ConsoleBreakSignal.CtrlBreak: - // Break into script debugger. - BreakIntoDebugger(); + if (s_cpp.NonInteractive) + { + //ControlBreak mimics ControlC in Noninteractive shells + SpinUpBreakHandlerThread(shouldEndSession: true); + } + else + { + // Break into script debugger. + BreakIntoDebugger(); + } return true; // Run the break handler... case ConsoleControl.ConsoleBreakSignal.CtrlC: - SpinUpBreakHandlerThread(false); + SpinUpBreakHandlerThread(shouldEndSession: false); return true; case ConsoleControl.ConsoleBreakSignal.Logoff: @@ -343,12 +359,12 @@ namespace Microsoft.PowerShell case ConsoleControl.ConsoleBreakSignal.Close: case ConsoleControl.ConsoleBreakSignal.Shutdown: - SpinUpBreakHandlerThread(true); + SpinUpBreakHandlerThread(shouldEndSession: true); return false; default: // Log as much sqm data as possible before we exit. - SpinUpBreakHandlerThread(true); + SpinUpBreakHandlerThread(shouldEndSession: true); return false; } }