From cef870285c222be8dbd519bad1b30586ecf66497 Mon Sep 17 00:00:00 2001 From: Mark Jansen Date: Fri, 18 Nov 2016 19:53:40 +0000 Subject: [PATCH] [CMD] Wait for commands to exit when run with /C or /K. CORE-12402 #resolve svn path=/trunk/; revision=73321 --- reactos/base/shell/cmd/cmd.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/reactos/base/shell/cmd/cmd.c b/reactos/base/shell/cmd/cmd.c index b6e09e3a422..ed162bf9f68 100644 --- a/reactos/base/shell/cmd/cmd.c +++ b/reactos/base/shell/cmd/cmd.c @@ -157,6 +157,7 @@ BOOL bExit = FALSE; /* indicates EXIT was typed */ BOOL bCanExit = TRUE; /* indicates if this shell is exitable */ 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 */ CRITICAL_SECTION ChildProcessRunningLock; BOOL bUnicodeOutput = FALSE; @@ -442,7 +443,7 @@ Execute(LPTSTR Full, LPTSTR First, LPTSTR Rest, PARSED_COMMAND *Cmd) if (prci.hProcess != NULL) { - if (bc != NULL || IsConsoleProcess(prci.hProcess)) + if (bc != NULL || bWaitForCommand || IsConsoleProcess(prci.hProcess)) { /* when processing a batch file or starting console processes: execute synchronously */ EnterCriticalSection(&ChildProcessRunningLock); @@ -1761,7 +1762,9 @@ Initialize() { /* Do the /C or /K command */ GetCmdLineCommand(commandline, &ptr[2], AlwaysStrip); + bWaitForCommand = TRUE; nExitCode = ParseCommandLine(commandline); + bWaitForCommand = FALSE; if (option != _T('K')) { nErrorLevel = nExitCode;