diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index 2510735f00d..2a7e08da898 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -1438,37 +1438,41 @@ static BOOL WCMD_delete_one (const WCHAR *thisArg) { * non-hidden files */ -BOOL WCMD_delete (WCHAR *args) { +RETURN_CODE WCMD_delete(WCHAR *args) +{ int argno; WCHAR *argN; BOOL argsProcessed = FALSE; - BOOL foundAny = FALSE; errorlevel = NO_ERROR; - for (argno=0; ; argno++) { - BOOL found; + for (argno = 0; ; argno++) + { WCHAR *thisArg; argN = NULL; - thisArg = WCMD_parameter (args, argno, &argN, FALSE, FALSE); + thisArg = WCMD_parameter(args, argno, &argN, FALSE, FALSE); if (!argN) break; /* no more parameters */ if (argN[0] == '/') continue; /* skip options */ argsProcessed = TRUE; - found = WCMD_delete_one(thisArg); - if (!found) + if (!WCMD_delete_one(thisArg)) + { WCMD_output_stderr(WCMD_LoadMessage(WCMD_FILENOTFOUND), thisArg); - foundAny |= found; + errorlevel = ERROR_INVALID_FUNCTION; + } } /* Handle no valid args */ if (!argsProcessed) + { WCMD_output_stderr(WCMD_LoadMessage(WCMD_NOARG)); + errorlevel = ERROR_INVALID_FUNCTION; + } - return foundAny; + return errorlevel; } /* diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 5919bcf4f77..8d23e7efaf8 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -492,10 +492,10 @@ SUCCESS 0 @todo_wine@FAILURE 1 SUCCESS 0 --- success/failure for ERASE command -@todo_wine@FAILURE 1 +FAILURE 1 SUCCESS 0 -@todo_wine@FAILURE 1 -@todo_wine@FAILURE 1 +FAILURE 1 +FAILURE 1 @todo_wine@--- ------------ Testing 'set' ------------ 1 diff --git a/programs/cmd/wcmd.h b/programs/cmd/wcmd.h index 44cdd415fbe..db63966bffe 100644 --- a/programs/cmd/wcmd.h +++ b/programs/cmd/wcmd.h @@ -168,7 +168,7 @@ void WCMD_clear_screen (void); void WCMD_color (void); void WCMD_copy (WCHAR *); void WCMD_create_dir (WCHAR *); -BOOL WCMD_delete (WCHAR *); +RETURN_CODE WCMD_delete(WCHAR *); void WCMD_directory (WCHAR *); RETURN_CODE WCMD_echo(const WCHAR *); void WCMD_endlocal (void); diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index cd2043b02f3..0ec3b014283 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -1830,7 +1830,7 @@ static RETURN_CODE execute_single_command(const WCHAR *command) break; case WCMD_DEL: case WCMD_ERASE: - WCMD_delete (parms_start); + return_code = WCMD_delete(parms_start); break; case WCMD_DIR: WCMD_directory (parms_start);