Module: wine Branch: master Commit: 6d6fee9ddaad1a2528135b3ef634c6fce674409a URL: https://gitlab.winehq.org/wine/wine/-/commit/6d6fee9ddaad1a2528135b3ef634c6f...
Author: Eric Pouech epouech@codeweavers.com Date: Tue Jun 18 14:04:02 2024 +0200
cmd: Fix delay expansion in FOR loop for filesets.
Signed-off-by: Eric Pouech epouech@codeweavers.com
---
programs/cmd/tests/test_builtins.cmd.exp | 4 ++-- programs/cmd/wcmdmain.c | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index a7af684cb9a..84637ce41e3 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -1014,8 +1014,8 @@ A D B C B D --- nested FORs and args tempering -@todo_wine@inner argument {-foo, bar} -@todo_wine@inner argument {-x, y} +inner argument {-foo, bar} +inner argument {-x, y} --- nesting and delayed expansion a 1 2 1-A2 diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 5f7d399b4e7..9bce77b19df 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -3140,13 +3140,17 @@ static CMD_NODE *for_control_execute_from_FILE(CMD_FOR_CONTROL *for_ctrl, FILE *
static CMD_NODE *for_control_execute_fileset(CMD_FOR_CONTROL *for_ctrl, CMD_NODE *cmdList) { + WCHAR set[MAXSTRING]; WCHAR *args; size_t len; CMD_NODE *body = NULL; FILE *input; int i;
- args = WCMD_skip_leading_spaces((WCHAR *)for_ctrl->set); + wcscpy(set, for_ctrl->set); + handleExpansion(set, context != NULL, delayedsubst); + + args = WCMD_skip_leading_spaces(set); for (len = wcslen(args); len && (args[len - 1] == L' ' || args[len - 1] == L'\t'); len--) args[len - 1] = L'\0'; if (args[0] == (for_ctrl->use_backq ? L''' : L'"') && match_ending_delim(args))