diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-09-02 21:21:15 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-09-02 21:21:15 +0000 |
commit | 96900dbce3aaa1fcac74a07a71482c5c6fcd3cab (patch) | |
tree | bf3fc68d0dcc660fce0e21171373a2d4e2395707 /kioslave/ftp | |
parent | 5f99bff82d3413803bcc652999f4f631058179d6 (diff) | |
download | tdelibs-96900dbce3aaa1fcac74a07a71482c5c6fcd3cab.tar.gz tdelibs-96900dbce3aaa1fcac74a07a71482c5c6fcd3cab.zip |
* Large set of SuSE patches to fix bugs and add functionality
* kdemm is included but not used by knotify as it does not work out of the box
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1171141 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kioslave/ftp')
-rw-r--r-- | kioslave/ftp/ftp.cc | 23 | ||||
-rw-r--r-- | kioslave/ftp/ftp.h | 5 |
2 files changed, 28 insertions, 0 deletions
diff --git a/kioslave/ftp/ftp.cc b/kioslave/ftp/ftp.cc index ffc324c39..9e4fc21d9 100644 --- a/kioslave/ftp/ftp.cc +++ b/kioslave/ftp/ftp.cc @@ -1275,6 +1275,16 @@ bool Ftp::ftpRename( const TQString & src, const TQString & dst, bool overwrite return false; } + // Must check if dst already exists, RNFR+RNTO overwrites by default (#127793). + if (ftpFileExists(dst)) { + error(ERR_FILE_ALREADY_EXIST, dst); + return false; + } + if (ftpFolder(dst, false)) { + error(ERR_DIR_ALREADY_EXIST, dst); + return false; + } + int pos = src.findRev("/"); if( !ftpFolder(src.left(pos+1), false) ) return false; @@ -2406,6 +2416,19 @@ bool Ftp::ftpSize( const TQString & path, char mode ) return true; } +bool Ftp::ftpFileExists(const TQString& path) +{ + TQCString buf; + buf = "SIZE "; + buf += remoteEncoding()->encode(path); + if( !ftpSendCmd( buf ) || (m_iRespType != 2) ) + return false; + + // skip leading "213 " (response code) + const char* psz = ftpResponse(4); + return psz != 0; +} + // Today the differences between ASCII and BINARY are limited to // CR or CR/LF line terminators. Many servers ignore ASCII (like // win2003 -or- vsftp with default config). In the early days of diff --git a/kioslave/ftp/ftp.h b/kioslave/ftp/ftp.h index b2ce56492..44f0bdc71 100644 --- a/kioslave/ftp/ftp.h +++ b/kioslave/ftp/ftp.h @@ -350,6 +350,11 @@ private: /** * Set the current working directory, but only if not yet current */ + bool ftpFileExists(const TQString& path); + + /** + * Set the current working directory, but only if not yet current + */ bool ftpFolder(const TQString& path, bool bReportError); /** |