BOOL bExit = FALSE; /* indicates EXIT was typed */
BOOL bCanExit = TRUE; /* indicates if this shell is exitable */
-volatile BOOL bCtrlBreak = FALSE; /* Ctrl-Break or Ctrl-C hit */
+BOOL bCtrlBreak = FALSE; /* Ctrl-Break or Ctrl-C hit */
BOOL bIgnoreEcho = FALSE; /* Set this to TRUE to prevent a newline, when executing a command */
static BOOL bWaitForCommand = FALSE; /* When we are executing something passed on the commandline after /c or /k */
INT nErrorLevel = 0; /* Errorlevel of last launched external program */
while (!bCanExit || !bExit)
{
+ /* Reset the Ctrl-Break / Ctrl-C state */
+ bCtrlBreak = FALSE;
+
Cmd = ParseCommand(NULL);
if (!Cmd)
continue;
/* FIXME: Handle batch files */
- //ConOutPrintf(_T("^C"));
+ // ConOutPrintf(_T("^C"));
return TRUE;
}
extern LPTSTR lpOriginalEnvironment;
extern WORD wColor;
extern WORD wDefColor;
-extern volatile BOOL bCtrlBreak;
+extern BOOL bCtrlBreak;
extern BOOL bIgnoreEcho;
extern BOOL bExit;
extern BOOL bDisableBatchEcho;
* Check if Ctrl-Break was pressed during the last calls
*/
-BOOL CheckCtrlBreak (INT mode)
+BOOL CheckCtrlBreak(INT mode)
{
static BOOL bLeaveAll = FALSE; /* leave all batch files */
TCHAR options[4]; /* Yes, No, All */
switch (mode)
{
case BREAK_OUTOFBATCH:
- bLeaveAll = 0;
+ bLeaveAll = FALSE;
return FALSE;
case BREAK_BATCHFILE:
+ {
if (bLeaveAll)
return TRUE;
ConOutChar(_T('\n'));
if (c == options[1])
- return bCtrlBreak = FALSE; /* ignore */
+ {
+ bCtrlBreak = FALSE; /* ignore */
+ return FALSE;
+ }
/* leave all batch files */
bLeaveAll = ((c == options[2]) || (c == _T('\3')));
break;
+ }
case BREAK_INPUT:
if (!bCtrlBreak)
}
/* state processed */
- bCtrlBreak = FALSE;
return TRUE;
}