changeset 96:9000a9763f6f

Fixed problem where destination directory would be renamed or deleted during copy operation. Now if the destination directory exists only the files inside will be copied.
author joachim99
date Thu, 25 Mar 2010 20:37:37 +0000
parents 6f42f5bd218e
children 5024edf90636
files kdiff3/src-QT4/directorymergewindow.cpp
diffstat 1 files changed, 10 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/kdiff3/src-QT4/directorymergewindow.cpp	Sun Feb 28 20:32:34 2010 +0000
+++ b/kdiff3/src-QT4/directorymergewindow.cpp	Thu Mar 25 20:37:37 2010 +0000
@@ -2500,7 +2500,9 @@
    if ( srcName == destName )
       return true;
 
-   if ( FileAccess(destName, true).exists() )
+   FileAccess fi( srcName );
+   FileAccess faDest(destName, true);
+   if ( faDest.exists() && !( fi.isDir() && faDest.isDir() && (fi.isSymLink()==faDest.isSymLink())) )
    {
       bool bSuccess = deleteFLD( destName, m_pOptions->m_bDmCreateBakFiles );
       if ( !bSuccess )
@@ -2511,7 +2513,6 @@
       }
    }
 
-   FileAccess fi( srcName );
 
    if ( fi.isSymLink() && ((fi.isDir() && !m_bFollowDirLinks)  ||  (!fi.isDir() && !m_bFollowFileLinks)) )
    {
@@ -2539,8 +2540,13 @@
 
    if ( fi.isDir() )
    {
-      bool bSuccess = makeDir( destName );
-      return bSuccess;
+      if ( faDest.exists() )
+	 return true;
+      else
+      {
+         bool bSuccess = makeDir( destName );
+         return bSuccess;
+      }
    }
 
    int pos=destName.lastIndexOf('/');