libidav/resource.c

changeset 186
05d11fbcaeb3
parent 185
cd42cccee550
child 205
bf756f6c3581
--- a/libidav/resource.c	Mon Jan 25 10:48:58 2016 +0100
+++ b/libidav/resource.c	Mon Jan 25 11:39:46 2016 +0100
@@ -872,17 +872,13 @@
     }
 }
 
-static int dav_cp_mv(DavResource *res, char *newpath, _Bool copy, _Bool override) {
+static int dav_cp_mv_url(DavResource *res, char *desturl, _Bool copy, _Bool override) {
     DavSession *sn = res->session;
     CURL *handle = sn->handle;
     util_set_url(sn, dav_resource_get_href(res));
     
-    char *dest = dav_session_get_href(sn, newpath);
-    dav_session_free(sn, dest);
-    char *desturl = util_get_url(sn, dest);
+    CURLcode ret = do_copy_move_request(handle, desturl, copy, override);
     
-    CURLcode ret = do_copy_move_request(handle, desturl, copy, override);
-    free(desturl);
     int status = 0;
     curl_easy_getinfo (handle, CURLINFO_RESPONSE_CODE, &status);
     if(ret == CURLE_OK && (status >= 200 && status < 300)) {
@@ -893,6 +889,16 @@
     }
 }
 
+static int dav_cp_mv(DavResource *res, char *newpath, _Bool copy, _Bool override) {
+    char *dest = dav_session_get_href(res->session, newpath);
+    char *desturl = util_get_url(res->session, dest);
+    dav_session_free(res->session, dest);
+    
+    int ret = dav_cp_mv_url(res, desturl, copy, override);
+    free(desturl);
+    return ret;
+}
+
 int dav_copy(DavResource *res, char *newpath) {
     return dav_cp_mv(res, newpath, true, false);
 }
@@ -909,6 +915,14 @@
     return dav_cp_mv(res, newpath, false, override);
 }
 
+int dav_copyto(DavResource *res, char *url, DavBool override) {
+    return dav_cp_mv_url(res, url, true, override);
+}
+
+int dav_moveto(DavResource *res, char *url, DavBool override) {
+    return dav_cp_mv_url(res, url, false, override);
+}
+
 
 int resource_add_crypto_info(DavSession *sn, char *href, char *name, char *hash) {
     if(!DAV_IS_ENCRYPTED(sn)) {

mercurial