diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index 708e3c6dce6..2510735f00d 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -3490,21 +3490,22 @@ void WCMD_title (const WCHAR *args) { * Copy a file to standard output. */ -void WCMD_type (WCHAR *args) { - +RETURN_CODE WCMD_type(WCHAR *args) +{ + RETURN_CODE return_code; int argno = 0; WCHAR *argN = args; BOOL writeHeaders = FALSE; if (param1[0] == 0x00) { WCMD_output_stderr(WCMD_LoadMessage(WCMD_NOARG)); - return; + return errorlevel = ERROR_INVALID_FUNCTION; } if (param2[0] != 0x00) writeHeaders = TRUE; /* Loop through all args */ - errorlevel = NO_ERROR; + return_code = NO_ERROR; while (argN) { WCHAR *thisArg = WCMD_parameter (args, argno++, &argN, FALSE, FALSE); @@ -3520,7 +3521,7 @@ void WCMD_type (WCHAR *args) { if (h == INVALID_HANDLE_VALUE) { WCMD_print_error (); WCMD_output_stderr(WCMD_LoadMessage(WCMD_READFAIL), thisArg); - errorlevel = ERROR_INVALID_FUNCTION; + return errorlevel = ERROR_INVALID_FUNCTION; } else { if (writeHeaders) { WCMD_output_stderr(L"\n%1\n\n\n", thisArg); @@ -3533,6 +3534,7 @@ void WCMD_type (WCHAR *args) { CloseHandle (h); } } + return errorlevel = return_code; } /**************************************************************************** diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 58e115642b2..5919bcf4f77 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -465,14 +465,14 @@ SUCCESS 666 SUCCESS 0 FAILURE 33 --- success/failure for TYPE command -@todo_wine@FAILURE 1 +FAILURE 1 SUCCESS 0 -@todo_wine@FAILURE 1 +FAILURE 1 @todo_wine@a@space@ @todo_wine@b@space@ @todo_wine@FAILURE 1 @todo_wine@--- -@todo_wine@FAILURE 1 +FAILURE 1 --- success/failure for COPY command @todo_wine@FAILURE 1 SUCCESS 0 diff --git a/programs/cmd/wcmd.h b/programs/cmd/wcmd.h index 9f8bdd46044..44cdd415fbe 100644 --- a/programs/cmd/wcmd.h +++ b/programs/cmd/wcmd.h @@ -202,7 +202,7 @@ void WCMD_setshow_time (void); void WCMD_shift (const WCHAR *args); void WCMD_start (WCHAR *args); void WCMD_title (const WCHAR *); -void WCMD_type (WCHAR *); +RETURN_CODE WCMD_type(WCHAR *); void WCMD_verify (const WCHAR *args); void WCMD_version (void); int WCMD_volume (BOOL set_label, const WCHAR *args); diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 46ec53587e7..cd2043b02f3 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -1896,7 +1896,7 @@ static RETURN_CODE execute_single_command(const WCHAR *command) WCMD_title(&whichcmd[count+1]); break; case WCMD_TYPE: - WCMD_type (parms_start); + return_code = WCMD_type(parms_start); break; case WCMD_VER: WCMD_output_asis(L"\r\n");