Based on a patch by Francesco Noferi.
Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=48396 Signed-off-by: Myah Caron qsniyg@protonmail.com --- Supersedes 192424.
v2: - Fix test failures - Remove useless else { ok = TRUE; } block
I used "Based on a patch by" rather than "From:" (in the last patch), as while the structure is similar to Francesco's patch, the implementation is completely different (adapted from WCMD_copy).
programs/cmd/builtins.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index d2f2ea517a0..934e55ac587 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -3033,15 +3033,28 @@ void WCMD_move (void) WCHAR copycmd[MAXSTRING]; DWORD len;
- /* /-Y has the highest priority, then /Y and finally the COPYCMD env. variable */ + /* Default whether automatic overwriting is on. If we are interactive then + we prompt by default, otherwise we overwrite by default + /-Y has the highest priority, then /Y and finally the COPYCMD env. variable */ if (wcsstr (quals, parmNoY)) force = FALSE; else if (wcsstr (quals, parmY)) force = TRUE; else { static const WCHAR copyCmdW[] = {'C','O','P','Y','C','M','D','\0'}; + /* By default, we will force the overwrite in batch mode and ask for + * confirmation in interactive mode. */ + force = !interactive; + /* If COPYCMD is set, then we force the overwrite with /Y and ask for + * confirmation with /-Y. If COPYCMD is neither of those, then we use the + * default behavior. */ len = GetEnvironmentVariableW(copyCmdW, copycmd, ARRAY_SIZE(copycmd)); - force = (len && len < ARRAY_SIZE(copycmd) && !lstrcmpiW(copycmd, parmY)); + if (len && len < ARRAY_SIZE(copycmd)) { + if (!lstrcmpiW (copycmd, parmY)) + force = TRUE; + else if (!lstrcmpiW (copycmd, parmNoY)) + force = FALSE; + } }
/* Prompt if overwriting */ -- 2.28.0