Module: wine Branch: master Commit: ea838ccb95d3df74f3e8647b17fb3773e2178a6d URL: https://gitlab.winehq.org/wine/wine/-/commit/ea838ccb95d3df74f3e8647b17fb377...
Author: Eric Pouech epouech@codeweavers.com Date: Mon Jul 1 14:52:33 2024 +0200
cmd: Set success/failure return code for MORE command.
Signed-off-by: Eric Pouech epouech@codeweavers.com
---
programs/cmd/builtins.c | 11 +++++------ programs/cmd/tests/test_builtins.cmd.exp | 8 ++++---- programs/cmd/wcmd.h | 2 +- programs/cmd/wcmdmain.c | 2 +- 4 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index caa76547734..368722ee1f0 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -3605,17 +3605,17 @@ RETURN_CODE WCMD_type(WCHAR *args) * Output either a file or stdin to screen in pages */
-void WCMD_more (WCHAR *args) { - +RETURN_CODE WCMD_more(WCHAR *args) +{ int argno = 0; WCHAR *argN = args; WCHAR moreStr[100]; WCHAR moreStrPage[100]; WCHAR buffer[512]; DWORD count; + RETURN_CODE return_code = NO_ERROR;
/* Prefix the NLS more with '-- ', then load the text */ - errorlevel = NO_ERROR; lstrcpyW(moreStr, L"-- "); LoadStringW(hinst, WCMD_MORESTR, &moreStr[3], ARRAY_SIZE(moreStr)-3);
@@ -3647,8 +3647,7 @@ void WCMD_more (WCHAR *args) { /* Restore stdin to what it was */ SetStdHandle(STD_INPUT_HANDLE, hstdin); CloseHandle(hConIn); - - return; + WCMD_output_asis (L"\r\n"); } else { BOOL needsPause = FALSE;
@@ -3679,7 +3678,6 @@ void WCMD_more (WCHAR *args) { if (h == INVALID_HANDLE_VALUE) { WCMD_print_error (); WCMD_output_stderr(WCMD_LoadMessage(WCMD_READFAIL), thisArg); - errorlevel = ERROR_INVALID_FUNCTION; } else { ULONG64 curPos = 0; ULONG64 fileLen = 0; @@ -3706,6 +3704,7 @@ void WCMD_more (WCHAR *args) {
WCMD_leave_paged_mode(); } + return errorlevel = return_code; }
/**************************************************************************** diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index a949693025c..18a7fecbcb7 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -614,11 +614,11 @@ FAILURE 2 FAILURE 1 --- success/failure for MORE command SUCCESS 0 -@todo_wine@SUCCESS 0 +SUCCESS 0 foo@space@ -@todo_wine@ -@todo_wine@SUCCESS 0 -@todo_wine@--- success/failure for PAUSE command + +SUCCESS 0 +--- success/failure for PAUSE command @todo_wine@FAILURE 1 --- ------------ Testing 'set' ------------ diff --git a/programs/cmd/wcmd.h b/programs/cmd/wcmd.h index ae8f69166c2..181e3ed1c2e 100644 --- a/programs/cmd/wcmd.h +++ b/programs/cmd/wcmd.h @@ -181,7 +181,7 @@ RETURN_CODE WCMD_give_help(WCHAR *args); RETURN_CODE WCMD_goto(void); RETURN_CODE WCMD_label(void); void WCMD_leave_paged_mode(void); -void WCMD_more (WCHAR *); +RETURN_CODE WCMD_more(WCHAR *); RETURN_CODE WCMD_move (void); WCHAR* WINAPIV WCMD_format_string (const WCHAR *format, ...); void WINAPIV WCMD_output (const WCHAR *format, ...); diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 4aa5a992218..27723347966 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -1925,7 +1925,7 @@ static RETURN_CODE execute_single_command(const WCHAR *command) return_code = WCMD_assoc(parms_start, FALSE); break; case WCMD_MORE: - WCMD_more(parms_start); + return_code = WCMD_more(parms_start); break; case WCMD_CHOICE: return_code = WCMD_choice(parms_start);