libidav/methods.c

changeset 44
e4e23a88d4de
parent 43
03076907b58a
child 60
cdca2eef48ee
equal deleted inserted replaced
43:03076907b58a 44:e4e23a88d4de
226 226
227 DavResource* parse_propfind_response(DavSession *sn, DavResource *root, UcxBuffer *response, DavQOp *cond, size_t len) { 227 DavResource* parse_propfind_response(DavSession *sn, DavResource *root, UcxBuffer *response, DavQOp *cond, size_t len) {
228 char *url = NULL; 228 char *url = NULL;
229 curl_easy_getinfo(sn->handle, CURLINFO_EFFECTIVE_URL, &url); 229 curl_easy_getinfo(sn->handle, CURLINFO_EFFECTIVE_URL, &url);
230 if(!root) { 230 if(!root) {
231 printf("method.c: TODO: remove\n");
231 root = dav_resource_new_href(sn, util_url_path(url)); // TODO: remove 232 root = dav_resource_new_href(sn, util_url_path(url)); // TODO: remove
232 } 233 }
233 234
234 xmlDoc *doc = xmlReadMemory(response->space, response->size, url, NULL, 0); 235 xmlDoc *doc = xmlReadMemory(response->space, response->size, url, NULL, 0);
235 if(!doc) { 236 if(!doc) {
353 if(!name) { 354 if(!name) {
354 // TODO: error 355 // TODO: error
355 fprintf(stderr, "decrypted name is null\n"); 356 fprintf(stderr, "decrypted name is null\n");
356 } 357 }
357 } else { 358 } else {
358 name = util_resource_name(href); 359 sstr_t resname = sstr(util_resource_name(href));
360 int nlen = 0;
361 char *uname = curl_easy_unescape(
362 sn->handle,
363 resname.ptr,
364 resname.length,
365 &nlen);
366 name = dav_session_strdup(sn, uname);
367 curl_free(uname);
359 } 368 }
360 369
361 href = dav_session_strdup(sn, href); 370 href = dav_session_strdup(sn, href);
362 res = dav_resource_new_full(sn, resource->path, name, href); 371 res = dav_resource_new_full(sn, resource->path, name, href);
372
373 dav_session_free(sn, name);
363 } 374 }
364 res->iscollection = iscollection; 375 res->iscollection = iscollection;
365 376
366 // add properties 377 // add properties
367 UCX_FOREACH(elm, properties) { 378 UCX_FOREACH(elm, properties) {

mercurial