Module: wine Branch: master Commit: 203c538aaa2ca940822791e4af42822bfdb59f53 URL: http://source.winehq.org/git/wine.git/?a=commit;h=203c538aaa2ca940822791e4af...
Author: Andrew Nguyen arethusa26@gmail.com Date: Sat Oct 3 17:00:59 2009 -0500
cmd: Fix copy option handling in batch mode.
---
programs/cmd/builtins.c | 16 ++++++++++++++-- 1 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index f5dfbf0..bccba85 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -171,7 +171,7 @@ void WCMD_copy (void) { WIN32_FIND_DATA fd; HANDLE hff; BOOL force, status; - WCHAR outpath[MAX_PATH], srcpath[MAX_PATH], copycmd[3]; + WCHAR outpath[MAX_PATH], srcpath[MAX_PATH], copycmd[4]; DWORD len; static const WCHAR copyCmdW[] = {'C','O','P','Y','C','M','D','\0'}; BOOL copyToDir = FALSE; @@ -238,8 +238,20 @@ void WCMD_copy (void) { else if (strstrW (quals, parmY)) force = TRUE; else { + /* By default, we will force the overwrite in batch mode and ask for + * confirmation in interactive mode. */ + force = !!context; + + /* 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 = GetEnvironmentVariable (copyCmdW, copycmd, sizeof(copycmd)/sizeof(WCHAR)); - force = (len && len < (sizeof(copycmd)/sizeof(WCHAR)) && ! lstrcmpiW (copycmd, parmY)); + if (len && len < (sizeof(copycmd)/sizeof(WCHAR))) { + if (!lstrcmpiW (copycmd, parmY)) + force = TRUE; + else if (!lstrcmpiW (copycmd, parmNoY)) + force = FALSE; + } }
/* Loop through all source files */