Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52344 Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- programs/cmd/tests/interactive_builtins.cmd | 3 +++ programs/cmd/tests/interactive_builtins.cmd.exp | 5 +++++ programs/cmd/wcmdmain.c | 10 +++++----- 3 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/programs/cmd/tests/interactive_builtins.cmd b/programs/cmd/tests/interactive_builtins.cmd index 1a06c29d103..96d53f371fd 100644 --- a/programs/cmd/tests/interactive_builtins.cmd +++ b/programs/cmd/tests/interactive_builtins.cmd @@ -28,6 +28,9 @@ if exist c:\windows ( @if exist c:\windows ( @echo bar ) +echo --------- testing expansion for variables +set myownecho=echo +%myownecho% foo echo --------- testing syntax errors if exist c:\windows ( echo bar diff --git a/programs/cmd/tests/interactive_builtins.cmd.exp b/programs/cmd/tests/interactive_builtins.cmd.exp index 331e9b54b38..81114ccbd86 100644 --- a/programs/cmd/tests/interactive_builtins.cmd.exp +++ b/programs/cmd/tests/interactive_builtins.cmd.exp @@ -48,6 +48,11 @@ bar @more@ @echo bar @more@) bar +echo --------- testing expansion for variables +--------- testing expansion for variables +set myownecho=echo +%myownecho% foo +foo echo --------- testing syntax errors --------- testing syntax errors if exist c:\windows ( diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index bfd72953639..b79c9361fc1 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -1309,6 +1309,11 @@ void WCMD_execute (const WCHAR *command, const WCHAR *redirects, new_redir = heap_xalloc(MAXSTRING * sizeof(WCHAR)); redir = new_redir;
+ /* Expand variables in command line mode only (batch mode will + be expanded as the line is read in, except for 'for' loops) */ + handleExpansion(new_cmd, (context != NULL), delayedsubst); + handleExpansion(new_redir, (context != NULL), delayedsubst); + /* Strip leading whitespaces, and a '@' if supplied */ whichcmd = WCMD_skip_leading_spaces(cmd); WINE_TRACE("Command: '%s'\n", wine_dbgstr_w(cmd)); @@ -1359,11 +1364,6 @@ void WCMD_execute (const WCHAR *command, const WCHAR *redirects, lstrcpyW(new_redir, redirects); }
- /* Expand variables in command line mode only (batch mode will - be expanded as the line is read in, except for 'for' loops) */ - handleExpansion(new_cmd, (context != NULL), delayedsubst); - handleExpansion(new_redir, (context != NULL), delayedsubst); - /* * Changing default drive has to be handled as a special case, anything * else if it exists after whitespace is ignored