From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@codeweavers.com --- programs/cmd/builtins.c | 11 +++++++++-- programs/cmd/wcmd.h | 2 +- programs/cmd/wcmdmain.c | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index 869c3d9d088..17671c32eba 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -3408,8 +3408,9 @@ RETURN_CODE WCMD_shift(const WCHAR *args) /**************************************************************************** * WCMD_start */ -void WCMD_start(WCHAR *args) +RETURN_CODE WCMD_start(WCHAR *args) { + RETURN_CODE return_code = NO_ERROR; int argno; int have_title; WCHAR file[MAX_PATH]; @@ -3457,6 +3458,11 @@ void WCMD_start(WCHAR *args) * * WCMD_parameter_with_delims will take care of everything for us. */ + /* FIXME: using an external start.exe has several caveats: + * - cannot discriminate syntax error in arguments from child's return code + * - need to access start.exe's child to get its running state + * (not start.exe itself) + */ have_title = FALSE; for (argno=0; ; argno++) { WCHAR *thisArg, *argN; @@ -3521,9 +3527,10 @@ void WCMD_start(WCHAR *args) { SetLastError(ERROR_FILE_NOT_FOUND); WCMD_print_error (); - errorlevel = RETURN_CODE_CANT_LAUNCH; + return_code = errorlevel = ERROR_INVALID_FUNCTION; } free(cmdline); + return return_code; }
/**************************************************************************** diff --git a/programs/cmd/wcmd.h b/programs/cmd/wcmd.h index a727a651516..c61f9b41cd5 100644 --- a/programs/cmd/wcmd.h +++ b/programs/cmd/wcmd.h @@ -202,7 +202,7 @@ RETURN_CODE WCMD_setshow_path(const WCHAR *args); RETURN_CODE WCMD_setshow_prompt(void); RETURN_CODE WCMD_setshow_time(void); RETURN_CODE WCMD_shift(const WCHAR *args); -void WCMD_start (WCHAR *args); +RETURN_CODE WCMD_start(WCHAR *args); RETURN_CODE WCMD_title(const WCHAR *); RETURN_CODE WCMD_type(WCHAR *); RETURN_CODE WCMD_verify(void); diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 2826f9a609a..b1d3ff81c04 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -1886,7 +1886,7 @@ static RETURN_CODE execute_single_command(const WCHAR *command) return_code = WCMD_shift(parms_start); break; case WCMD_START: - WCMD_start (parms_start); + return_code = WCMD_start(parms_start); break; case WCMD_TIME: return_code = WCMD_setshow_time();