From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@codeweavers.com --- programs/cmd/tests/test_builtins.cmd.exp | 6 +++--- programs/cmd/wcmdmain.c | 9 ++++----- 2 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index d6a4acb3cc8..35ef48a70fe 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -702,9 +702,9 @@ FAILURE 457 FAILURE 459 FAILURE 460 FAILURE 461 -@todo_wine@FAILURE 267 -@todo_wine@FAILURE 1 -@todo_wine@FAILURE 1 +FAILURE 267 +FAILURE 1 +FAILURE 1 --------- success/failure when invoking cmd /k -------------- a @todo_wine@ERRORLEVEL 0 diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index fbec86a481a..5b029b6a1ed 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -4491,23 +4491,22 @@ int __cdecl wmain (int argc, WCHAR *argvW[]) }
if (opt_c) { + RETURN_CODE return_code = NO_ERROR; /* If we do a "cmd /c command", we don't want to allocate a new * console since the command returns immediately. Rather, we use * the currently allocated input and output handles. This allows * us to pipe to and read from the command interpreter. */ - /* Parse the command string, without reading any more input */ rpl_status = WCMD_ReadAndParseLine(cmd, &toExecute); if (rpl_status == RPL_SUCCESS && toExecute) { - node_execute(toExecute); + return_code = node_execute(toExecute); node_dispose_tree(toExecute); } else if (rpl_status == RPL_SYNTAXERROR) - errorlevel = RETURN_CODE_SYNTAX_ERROR; - - return errorlevel; + return_code = ERROR_INVALID_FUNCTION; + return return_code; }
GetStartupInfoW(&startupInfo);