Module: wine Branch: master Commit: bec2a9fa340b6ae0410ec8ce89405684514057d2 URL: https://gitlab.winehq.org/wine/wine/-/commit/bec2a9fa340b6ae0410ec8ce8940568...
Author: Eric Pouech epouech@codeweavers.com Date: Sat Jun 29 13:09:08 2024 +0200
cmd: Set success/failure return_code for POPD command.
Signed-off-by: Eric Pouech epouech@codeweavers.com
---
programs/cmd/builtins.c | 6 ++++-- programs/cmd/tests/test_builtins.cmd.exp | 2 +- programs/cmd/wcmd.h | 2 +- programs/cmd/wcmdmain.c | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index 6e0a7830900..9771511322c 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -1929,17 +1929,19 @@ RETURN_CODE WCMD_pushd(const WCHAR *args) * Pop a directory from the stack */
-void WCMD_popd (void) { +RETURN_CODE WCMD_popd(void) +{ struct env_stack *temp = pushd_directories;
if (!pushd_directories) - return; + return ERROR_INVALID_FUNCTION;
/* pop the old environment from the stack, and make it the current dir */ pushd_directories = temp->next; SetCurrentDirectoryW(temp->strings); LocalFree (temp->strings); LocalFree (temp); + return NO_ERROR; }
/**************************************************************************** diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index dc2288742da..501b27af725 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -513,7 +513,7 @@ SUCCESS 0 SUCCESS 0 FAILURE 1 SUCCESS 666 -@todo_wine@FAILURE 1 +FAILURE 1 ERRORLEVEL 666 --- success/failure for DIR command FAILURE 1 diff --git a/programs/cmd/wcmd.h b/programs/cmd/wcmd.h index f79645495b3..9e10069cdac 100644 --- a/programs/cmd/wcmd.h +++ b/programs/cmd/wcmd.h @@ -186,7 +186,7 @@ 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); -void WCMD_popd (void); +RETURN_CODE WCMD_popd(void); void WCMD_print_error (void); RETURN_CODE WCMD_pushd(const WCHAR *args); void WCMD_remove_dir (WCHAR *command); diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 0f4c3ae8e3f..2a814cfe7b0 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -1916,7 +1916,7 @@ static RETURN_CODE execute_single_command(const WCHAR *command) return_code = WCMD_pushd(parms_start); break; case WCMD_POPD: - WCMD_popd(); + return_code = WCMD_popd(); break; case WCMD_ASSOC: WCMD_assoc(parms_start, TRUE);