744 } |
744 } |
745 |
745 |
746 DavResource* dav_create_child(DavResource *parent, char *name) { |
746 DavResource* dav_create_child(DavResource *parent, char *name) { |
747 DavResource *res = dav_resource_new_child(parent->session, parent, name); |
747 DavResource *res = dav_resource_new_child(parent->session, parent, name); |
748 if(dav_create(res)) { |
748 if(dav_create(res)) { |
749 // TODO: free resource |
749 dav_resource_free(res); |
750 return NULL; |
750 return NULL; |
751 } else { |
751 } else { |
752 return res; |
752 return res; |
753 } |
753 } |
754 } |
754 } |
806 int len = strlen(name); |
806 int len = strlen(name); |
807 if(name[len - 1] == '/') { |
807 if(name[len - 1] == '/') { |
808 name[len - 1] = '\0'; |
808 name[len - 1] = '\0'; |
809 } |
809 } |
810 if(resource_add_crypto_info(sn, h, name, NULL)) { |
810 if(resource_add_crypto_info(sn, h, name, NULL)) { |
811 // TODO: error |
811 sn->error = DAV_ERROR; |
|
812 dav_session_set_errstr(sn, "Cannot set crypto properties for ancestor"); |
812 } |
813 } |
813 break; |
814 break; |
814 } else if(status == 405) { |
815 } else if(status == 405) { |
815 // parent already exists |
816 // parent already exists |
816 break; |
817 break; |
850 curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &s); |
851 curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &s); |
851 *status = s; |
852 *status = s; |
852 if(code == CURLE_OK && (s >= 200 && s < 300)) { |
853 if(code == CURLE_OK && (s >= 200 && s < 300)) { |
853 sn->error = DAV_OK; |
854 sn->error = DAV_OK; |
854 // if the session has encrypted file names, add crypto infos |
855 // if the session has encrypted file names, add crypto infos |
855 resource_add_crypto_info(sn, res->href, res->name, NULL); // TODO: check return type |
856 if(!resource_add_crypto_info(sn, res->href, res->name, NULL)) { |
856 |
857 // do a minimal propfind request |
857 // do a minimal propfind request |
858 UcxBuffer *rqbuf = create_propfind_request(sn, NULL); |
858 UcxBuffer *rqbuf = create_propfind_request(sn, NULL); |
859 int ret = dav_propfind(sn, res, rqbuf); |
859 int ret = dav_propfind(sn, res, rqbuf); |
860 ucx_buffer_free(rqbuf); |
860 ucx_buffer_free(rqbuf); |
861 return ret; |
861 return ret; |
862 } else { |
|
863 return 1; |
|
864 } |
862 } else { |
865 } else { |
863 dav_session_set_error(sn, code, s); |
866 dav_session_set_error(sn, code, s); |
864 return 1; |
867 return 1; |
865 } |
868 } |
866 } |
869 } |