Eric Pouech : cmd: Fix delayed expansion in FOR loop on file sets.
Module: wine Branch: master Commit: f98077591f7d18f60c4ec6685027b987c75c1724 URL: https://gitlab.winehq.org/wine/wine/-/commit/f98077591f7d18f60c4ec6685027b98... Author: Eric Pouech <epouech(a)codeweavers.com> Date: Tue Jun 18 10:11:13 2024 +0200 cmd: Fix delayed expansion in FOR loop on file sets. Signed-off-by: Eric Pouech <epouech(a)codeweavers.com> --- programs/cmd/tests/test_builtins.cmd.exp | 4 ++-- programs/cmd/wcmdmain.c | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 84637ce41e3..1564e6c4611 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -610,8 +610,8 @@ N '' '.eh'@or_broken@'' "foo bar" -(a)todo_wine@foo -(a)todo_wine@bar +foo +bar --- in digit variables a %1 %2 b %1 %2 diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index ec71e760348..f2030d7e985 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -3255,6 +3255,7 @@ static CMD_NODE *for_control_execute_set(CMD_FOR_CONTROL *for_ctrl, const WCHAR len = 0; wcscpy(set, for_ctrl->set); + handleExpansion(set, context != NULL, delayedsubst); for (i = 0; ; i++) { WCHAR *element = WCMD_parameter(set, i, NULL, TRUE, FALSE); @@ -3314,7 +3315,11 @@ static CMD_NODE *for_control_execute_walk_files(CMD_FOR_CONTROL *for_ctrl, CMD_N if (for_ctrl->root_dir) { - dirs_to_walk = WCMD_dir_stack_create(for_ctrl->root_dir, NULL); + WCHAR buffer[MAXSTRING]; + + wcscpy(buffer, for_ctrl->root_dir); + handleExpansion(buffer, context != NULL, delayedsubst); + dirs_to_walk = WCMD_dir_stack_create(buffer, NULL); } else dirs_to_walk = WCMD_dir_stack_create(NULL, NULL); ref_len = wcslen(dirs_to_walk->dirName);
participants (1)
-
Alexandre Julliard