230 if(!root) { |
230 if(!root) { |
231 printf("method.c: TODO: remove\n"); |
231 printf("method.c: TODO: remove\n"); |
232 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 |
233 } |
233 } |
234 |
234 |
|
235 //printf("%.*s\n\n", response->size, response->space); |
235 xmlDoc *doc = xmlReadMemory(response->space, response->size, url, NULL, 0); |
236 xmlDoc *doc = xmlReadMemory(response->space, response->size, url, NULL, 0); |
236 if(!doc) { |
237 if(!doc) { |
237 // TODO: free stuff |
238 // TODO: free stuff |
238 sn->error = DAV_ERROR; |
239 sn->error = DAV_ERROR; |
239 return NULL; |
240 return NULL; |
527 } |
528 } |
528 s = S("</D:prop>\n</D:set>\n"); |
529 s = S("</D:prop>\n</D:set>\n"); |
529 ucx_buffer_write(s.ptr, 1, s.length, buf); |
530 ucx_buffer_write(s.ptr, 1, s.length, buf); |
530 } |
531 } |
531 if(data->remove) { |
532 if(data->remove) { |
532 s = S("<D:set>\n<D:prop>\n"); |
533 s = S("<D:remove>\n<D:prop>\n"); |
533 ucx_buffer_write(s.ptr, 1, s.length, buf); |
534 ucx_buffer_write(s.ptr, 1, s.length, buf); |
534 UCX_FOREACH(elm, data->set) { |
535 UCX_FOREACH(elm, data->remove) { |
535 DavProperty *property = elm->data; |
536 DavProperty *property = elm->data; |
536 char *prefix = ucx_map_cstr_get(namespaces, property->ns->name); |
537 char *prefix = ucx_map_cstr_get(namespaces, property->ns->name); |
537 |
538 |
538 s = S("<"); |
539 s = S("<"); |
539 ucx_buffer_write(s.ptr, 1, s.length, buf); |
540 ucx_buffer_write(s.ptr, 1, s.length, buf); |
541 ucx_buffer_write(s.ptr, 1, s.length, buf); |
542 ucx_buffer_write(s.ptr, 1, s.length, buf); |
542 s = S(":"); |
543 s = S(":"); |
543 ucx_buffer_write(s.ptr, 1, s.length, buf); |
544 ucx_buffer_write(s.ptr, 1, s.length, buf); |
544 s = sstr(property->name); |
545 s = sstr(property->name); |
545 ucx_buffer_write(s.ptr, 1, s.length, buf); |
546 ucx_buffer_write(s.ptr, 1, s.length, buf); |
546 s = S(">"); |
547 s = S(" />\n"); |
547 ucx_buffer_write(s.ptr, 1, s.length, buf); |
548 ucx_buffer_write(s.ptr, 1, s.length, buf); |
548 s = sstr(property->value); |
549 } |
549 ucx_buffer_write(s.ptr, 1, s.length, buf); |
550 s = S("</D:prop>\n</D:remove>\n"); |
550 s = S("</"); |
|
551 ucx_buffer_write(s.ptr, 1, s.length, buf); |
|
552 s = sstr(prefix); |
|
553 ucx_buffer_write(s.ptr, 1, s.length, buf); |
|
554 s = S(":"); |
|
555 ucx_buffer_write(s.ptr, 1, s.length, buf); |
|
556 s = sstr(property->name); |
|
557 ucx_buffer_write(s.ptr, 1, s.length, buf); |
|
558 s = S(">\n"); |
|
559 ucx_buffer_write(s.ptr, 1, s.length, buf); |
|
560 } |
|
561 s = S("</D:prop>\n</D:set>\n"); |
|
562 ucx_buffer_write(s.ptr, 1, s.length, buf); |
551 ucx_buffer_write(s.ptr, 1, s.length, buf); |
563 } |
552 } |
564 |
553 |
565 s = S("</D:propertyupdate>\n"); |
554 s = S("</D:propertyupdate>\n"); |
566 ucx_buffer_write(s.ptr, 1, s.length, buf); |
555 ucx_buffer_write(s.ptr, 1, s.length, buf); |