diff -r cd42cccee550 -r 05d11fbcaeb3 libidav/resource.c --- 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)) {