summaryrefslogtreecommitdiff
path: root/ucb/source/ucp/ftp/ftpurl.cxx
diff options
context:
space:
mode:
authorAndreas Bille <abi@openoffice.org>2002-10-24 15:43:05 +0000
committerAndreas Bille <abi@openoffice.org>2002-10-24 15:43:05 +0000
commit6e91aac6d53f9707af7daf18ada0c20f036acc61 (patch)
treee4bacee8abe91c81f98f78135e6451bf55d35f99 /ucb/source/ucp/ftp/ftpurl.cxx
parentf53dd7caf41dd05a5084d56e15d3895847726798 (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.cxx88
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);
+}
+