Mercurial > hg > easyhg-kdiff3
comparison kdiff3/src-QT4/directorymergewindow.cpp @ 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 | 236f1c9c3fbf |
comparison
equal
deleted
inserted
replaced
95:6f42f5bd218e | 96:9000a9763f6f |
---|---|
2498 bool DirectoryMergeWindow::copyFLD( const QString& srcName, const QString& destName ) | 2498 bool DirectoryMergeWindow::copyFLD( const QString& srcName, const QString& destName ) |
2499 { | 2499 { |
2500 if ( srcName == destName ) | 2500 if ( srcName == destName ) |
2501 return true; | 2501 return true; |
2502 | 2502 |
2503 if ( FileAccess(destName, true).exists() ) | 2503 FileAccess fi( srcName ); |
2504 FileAccess faDest(destName, true); | |
2505 if ( faDest.exists() && !( fi.isDir() && faDest.isDir() && (fi.isSymLink()==faDest.isSymLink())) ) | |
2504 { | 2506 { |
2505 bool bSuccess = deleteFLD( destName, m_pOptions->m_bDmCreateBakFiles ); | 2507 bool bSuccess = deleteFLD( destName, m_pOptions->m_bDmCreateBakFiles ); |
2506 if ( !bSuccess ) | 2508 if ( !bSuccess ) |
2507 { | 2509 { |
2508 m_pStatusInfo->addText(i18n("Error: copy( %1 -> %2 ) failed." | 2510 m_pStatusInfo->addText(i18n("Error: copy( %1 -> %2 ) failed." |
2509 "Deleting existing destination failed.",srcName,destName)); | 2511 "Deleting existing destination failed.",srcName,destName)); |
2510 return false; | 2512 return false; |
2511 } | 2513 } |
2512 } | 2514 } |
2513 | 2515 |
2514 FileAccess fi( srcName ); | |
2515 | 2516 |
2516 if ( fi.isSymLink() && ((fi.isDir() && !m_bFollowDirLinks) || (!fi.isDir() && !m_bFollowFileLinks)) ) | 2517 if ( fi.isSymLink() && ((fi.isDir() && !m_bFollowDirLinks) || (!fi.isDir() && !m_bFollowFileLinks)) ) |
2517 { | 2518 { |
2518 m_pStatusInfo->addText(i18n("copyLink( %1 -> %2 )",srcName,destName)); | 2519 m_pStatusInfo->addText(i18n("copyLink( %1 -> %2 )",srcName,destName)); |
2519 #if defined(_WIN32) || defined(Q_OS_OS2) | 2520 #if defined(_WIN32) || defined(Q_OS_OS2) |
2537 #endif | 2538 #endif |
2538 } | 2539 } |
2539 | 2540 |
2540 if ( fi.isDir() ) | 2541 if ( fi.isDir() ) |
2541 { | 2542 { |
2542 bool bSuccess = makeDir( destName ); | 2543 if ( faDest.exists() ) |
2543 return bSuccess; | 2544 return true; |
2545 else | |
2546 { | |
2547 bool bSuccess = makeDir( destName ); | |
2548 return bSuccess; | |
2549 } | |
2544 } | 2550 } |
2545 | 2551 |
2546 int pos=destName.lastIndexOf('/'); | 2552 int pos=destName.lastIndexOf('/'); |
2547 if ( pos>0 ) | 2553 if ( pos>0 ) |
2548 { | 2554 { |