From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@codeweavers.com --- programs/cmd/builtins.c | 7 +++++-- programs/cmd/tests/test_builtins.cmd.exp | 2 +- programs/cmd/wcmd.h | 2 +- programs/cmd/wcmdmain.c | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index 368722ee1f0..bd0d94f00e8 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -2087,8 +2087,9 @@ RETURN_CODE WCMD_move(void) * Suspend execution of a batch script until a key is typed */
-void WCMD_pause (void) +RETURN_CODE WCMD_pause(void) { + RETURN_CODE return_code = NO_ERROR; DWORD oldmode; BOOL have_console; DWORD count; @@ -2100,9 +2101,11 @@ void WCMD_pause (void) SetConsoleMode(hIn, 0);
WCMD_output_asis(anykey); - WCMD_ReadFile(hIn, &key, 1, &count); + if (!WCMD_ReadFile(hIn, &key, 1, &count) || !count) + return_code = ERROR_INVALID_FUNCTION; if (have_console) SetConsoleMode(hIn, oldmode); + return return_code; }
/**************************************************************************** diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 18a7fecbcb7..4b162af9a8e 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -619,7 +619,7 @@ foo@space@
SUCCESS 0 --- success/failure for PAUSE command -@todo_wine@FAILURE 1 +FAILURE 1 --- ------------ Testing 'set' ------------ 1 diff --git a/programs/cmd/wcmd.h b/programs/cmd/wcmd.h index 181e3ed1c2e..6c76070338c 100644 --- a/programs/cmd/wcmd.h +++ b/programs/cmd/wcmd.h @@ -188,7 +188,7 @@ void WINAPIV WCMD_output (const WCHAR *format, ...); void WINAPIV WCMD_output_stderr (const WCHAR *format, ...); void WCMD_output_asis (const WCHAR *message); void WCMD_output_asis_stderr (const WCHAR *message); -void WCMD_pause (void); +RETURN_CODE WCMD_pause(void); RETURN_CODE WCMD_popd(void); void WCMD_print_error (void); RETURN_CODE WCMD_pushd(const WCHAR *args); diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 27723347966..8380207e5d2 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -1861,7 +1861,7 @@ static RETURN_CODE execute_single_command(const WCHAR *command) return_code = WCMD_setshow_path(parms_start); break; case WCMD_PAUSE: - WCMD_pause (); + return_code = WCMD_pause(); break; case WCMD_PROMPT: return_code = WCMD_setshow_prompt();