870 dav_session_set_error(sn, ret, status); |
870 dav_session_set_error(sn, ret, status); |
871 return 0; |
871 return 0; |
872 } |
872 } |
873 } |
873 } |
874 |
874 |
875 static int dav_cp_mv(DavResource *res, char *newpath, _Bool copy, _Bool override) { |
875 static int dav_cp_mv_url(DavResource *res, char *desturl, _Bool copy, _Bool override) { |
876 DavSession *sn = res->session; |
876 DavSession *sn = res->session; |
877 CURL *handle = sn->handle; |
877 CURL *handle = sn->handle; |
878 util_set_url(sn, dav_resource_get_href(res)); |
878 util_set_url(sn, dav_resource_get_href(res)); |
879 |
879 |
880 char *dest = dav_session_get_href(sn, newpath); |
|
881 dav_session_free(sn, dest); |
|
882 char *desturl = util_get_url(sn, dest); |
|
883 |
|
884 CURLcode ret = do_copy_move_request(handle, desturl, copy, override); |
880 CURLcode ret = do_copy_move_request(handle, desturl, copy, override); |
885 free(desturl); |
881 |
886 int status = 0; |
882 int status = 0; |
887 curl_easy_getinfo (handle, CURLINFO_RESPONSE_CODE, &status); |
883 curl_easy_getinfo (handle, CURLINFO_RESPONSE_CODE, &status); |
888 if(ret == CURLE_OK && (status >= 200 && status < 300)) { |
884 if(ret == CURLE_OK && (status >= 200 && status < 300)) { |
889 return 0; |
885 return 0; |
890 } else { |
886 } else { |
891 dav_session_set_error(sn, ret, status); |
887 dav_session_set_error(sn, ret, status); |
892 return 1; |
888 return 1; |
893 } |
889 } |
894 } |
890 } |
895 |
891 |
|
892 static int dav_cp_mv(DavResource *res, char *newpath, _Bool copy, _Bool override) { |
|
893 char *dest = dav_session_get_href(res->session, newpath); |
|
894 char *desturl = util_get_url(res->session, dest); |
|
895 dav_session_free(res->session, dest); |
|
896 |
|
897 int ret = dav_cp_mv_url(res, desturl, copy, override); |
|
898 free(desturl); |
|
899 return ret; |
|
900 } |
|
901 |
896 int dav_copy(DavResource *res, char *newpath) { |
902 int dav_copy(DavResource *res, char *newpath) { |
897 return dav_cp_mv(res, newpath, true, false); |
903 return dav_cp_mv(res, newpath, true, false); |
898 } |
904 } |
899 |
905 |
900 int dav_move(DavResource *res, char *newpath) { |
906 int dav_move(DavResource *res, char *newpath) { |
905 return dav_cp_mv(res, newpath, true, override); |
911 return dav_cp_mv(res, newpath, true, override); |
906 } |
912 } |
907 |
913 |
908 int dav_move_o(DavResource *res, char *newpath, DavBool override) { |
914 int dav_move_o(DavResource *res, char *newpath, DavBool override) { |
909 return dav_cp_mv(res, newpath, false, override); |
915 return dav_cp_mv(res, newpath, false, override); |
|
916 } |
|
917 |
|
918 int dav_copyto(DavResource *res, char *url, DavBool override) { |
|
919 return dav_cp_mv_url(res, url, true, override); |
|
920 } |
|
921 |
|
922 int dav_moveto(DavResource *res, char *url, DavBool override) { |
|
923 return dav_cp_mv_url(res, url, false, override); |
910 } |
924 } |
911 |
925 |
912 |
926 |
913 int resource_add_crypto_info(DavSession *sn, char *href, char *name, char *hash) { |
927 int resource_add_crypto_info(DavSession *sn, char *href, char *name, char *hash) { |
914 if(!DAV_IS_ENCRYPTED(sn)) { |
928 if(!DAV_IS_ENCRYPTED(sn)) { |