libidav/resource.c

changeset 186
05d11fbcaeb3
parent 185
cd42cccee550
child 205
bf756f6c3581
equal deleted inserted replaced
185:cd42cccee550 186:05d11fbcaeb3
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)) {

mercurial