Andrew Nguyen : cmd: Fix copy option handling in batch mode.

Alexandre Julliard julliard at winehq.org
Tue Oct 6 10:35:47 CDT 2009


Module: wine
Branch: master
Commit: 203c538aaa2ca940822791e4af42822bfdb59f53
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=203c538aaa2ca940822791e4af42822bfdb59f53

Author: Andrew Nguyen <arethusa26 at 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 */




More information about the wine-cvs mailing list