diff options
author | Andreas Bille <abi@openoffice.org> | 2002-10-24 15:43:05 +0000 |
---|---|---|
committer | Andreas Bille <abi@openoffice.org> | 2002-10-24 15:43:05 +0000 |
commit | 6e91aac6d53f9707af7daf18ada0c20f036acc61 (patch) | |
tree | e4bacee8abe91c81f98f78135e6451bf55d35f99 /ucb/source/ucp/ftp/ftpurl.cxx | |
parent | f53dd7caf41dd05a5084d56e15d3895847726798 (diff) |
#104475# partly due to 104477, partly missing command (del)
Diffstat (limited to 'ucb/source/ucp/ftp/ftpurl.cxx')
-rw-r--r-- | ucb/source/ucp/ftp/ftpurl.cxx | 88 |
1 files changed, 86 insertions, 2 deletions
diff --git a/ucb/source/ucp/ftp/ftpurl.cxx b/ucb/source/ucp/ftp/ftpurl.cxx index 6d4bf30dd54a..23b9c883b66b 100644 --- a/ucb/source/ucp/ftp/ftpurl.cxx +++ b/ucb/source/ucp/ftp/ftpurl.cxx @@ -2,9 +2,9 @@ * * $RCSfile: ftpurl.cxx,v $ * - * $Revision: 1.10 $ + * $Revision: 1.11 $ * - * last change: $Author: abi $ $Date: 2002-10-24 11:55:41 $ + * last change: $Author: abi $ $Date: 2002-10-24 16:43:05 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -762,3 +762,87 @@ void FTPURL::mkdir(bool ReplaceExisting) const if(err != CURLE_OK) throw curl_exception(err); } + + +rtl::OUString FTPURL::ren(const rtl::OUString& NewTitle) + throw(curl_exception) +{ + CURL *curl = m_pFCP->handle(); + + // post request + rtl::OString renamefrom("RNFR "); + rtl::OUString OldTitle = net_title(); + renamefrom += + rtl::OString(OldTitle.getStr(), + OldTitle.getLength(), + RTL_TEXTENCODING_UTF8); + + rtl::OString renameto("RNTO "); + renameto += + rtl::OString(NewTitle.getStr(), + NewTitle.getLength(), + RTL_TEXTENCODING_UTF8); + + struct curl_slist *slist = 0; + slist = curl_slist_append(slist,renamefrom.getStr()); + slist = curl_slist_append(slist,renameto.getStr()); + curl_easy_setopt(curl,CURLOPT_POSTQUOTE,slist); + + SET_CONTROL_CONTAINER; + curl_easy_setopt(curl,CURLOPT_NOBODY,TRUE); // no data => no transfer + curl_easy_setopt(curl,CURLOPT_QUOTE,0); + + rtl::OUString url(parent(true)); + if(1+url.lastIndexOf(sal_Unicode('/')) != url.getLength()) + url += rtl::OUString::createFromAscii("/"); + SET_URL(url); + + CURLcode err = curl_easy_perform(curl); + curl_slist_free_all(slist); + if(err != CURLE_OK) + throw curl_exception(err); + else if(m_aPathSegmentVec.size() && + !m_aPathSegmentVec.back().equalsAscii("..")) + m_aPathSegmentVec.back() = NewTitle; + return OldTitle; +} + + + +void FTPURL::del() const + throw(curl_exception) +{ + FTPDirentry aDirentry(direntry()); + + rtl::OString dele(aDirentry.m_aName.getStr(), + aDirentry.m_aName.getLength(), + RTL_TEXTENCODING_UTF8); + + if(aDirentry.m_nMode & INETCOREFTP_FILEMODE_ISDIR) + dele = rtl::OString("RMD ") + dele; + else if(aDirentry.m_nMode != INETCOREFTP_FILEMODE_UNKNOWN) + dele = rtl::OString("DELE ") + dele; + else + return; + + // post request + CURL *curl = m_pFCP->handle(); + struct curl_slist *slist = 0; + slist = curl_slist_append(slist,dele.getStr()); + curl_easy_setopt(curl,CURLOPT_POSTQUOTE,slist); + + SET_CONTROL_CONTAINER; + curl_easy_setopt(curl,CURLOPT_NOBODY,TRUE); // no data => no transfer + curl_easy_setopt(curl,CURLOPT_QUOTE,0); + + rtl::OUString url(parent(true)); + if(1+url.lastIndexOf(sal_Unicode('/')) != url.getLength()) + url += rtl::OUString::createFromAscii("/"); + SET_URL(url); + + CURLcode err = curl_easy_perform(curl); + curl_slist_free_all(slist); + if(err != CURLE_OK) + throw curl_exception(err); +} + |