103 free(path); |
103 free(path); |
104 |
104 |
105 return res; |
105 return res; |
106 } |
106 } |
107 |
107 |
|
108 void resource_free_properties(DavSession *sn, UcxMap *properties) { |
|
109 UcxMapIterator i = ucx_map_iterator(properties); |
|
110 char *property; |
|
111 UCX_MAP_FOREACH(key, property, i) { |
|
112 dav_session_free(sn, property); |
|
113 } |
|
114 ucx_map_free(properties); |
|
115 } |
|
116 |
108 void dav_resource_free(DavResource *res) { |
117 void dav_resource_free(DavResource *res) { |
109 DavSession *sn = res->session; |
118 DavSession *sn = res->session; |
110 |
119 |
111 dav_session_free(sn, res->name); |
120 dav_session_free(sn, res->name); |
112 dav_session_free(sn, res->path); |
121 dav_session_free(sn, res->path); |
113 if(res->href) { |
122 if(res->href) { |
114 dav_session_free(sn, res->href); |
123 dav_session_free(sn, res->href); |
115 } |
124 } |
116 |
125 |
117 DavResourceData *data = res->data; |
126 DavResourceData *data = res->data; |
118 UcxMapIterator i = ucx_map_iterator(data->properties); |
127 resource_free_properties(sn, data->properties); |
119 UcxKey key; |
|
120 char *property; |
|
121 UCX_MAP_FOREACH(key, property, i) { |
|
122 dav_session_free(sn, property); |
|
123 } |
|
124 ucx_map_free(data->properties); |
|
125 |
128 |
126 UCX_FOREACH(elm, data->set) { |
129 UCX_FOREACH(elm, data->set) { |
127 DavProperty *p = elm->data; |
130 DavProperty *p = elm->data; |
128 dav_session_free(sn, p->ns->name); |
131 dav_session_free(sn, p->ns->name); |
129 if(p->ns->prefix) { |
132 if(p->ns->prefix) { |
270 } |
273 } |
271 |
274 |
272 char* dav_get_property(DavResource *res, char *name) { |
275 char* dav_get_property(DavResource *res, char *name) { |
273 char *pns; |
276 char *pns; |
274 char *pname; |
277 char *pname; |
275 dav_get_property_namespace(res->session->context, name, &pns, &pname); |
278 dav_get_property_namespace_str(res->session->context, name, &pns, &pname); |
276 return dav_get_property_ns(res, pns, pname); |
279 return dav_get_property_ns(res, pns, pname); |
277 } |
280 } |
278 |
281 |
279 char* dav_get_property_ns(DavResource *res, char *ns, char *name) { |
282 char* dav_get_property_ns(DavResource *res, char *ns, char *name) { |
280 char *property = resource_get_property(res, ns, name); |
283 char *property = resource_get_property(res, ns, name); |
303 } |
306 } |
304 |
307 |
305 void dav_set_property(DavResource *res, char *name, char *value) { |
308 void dav_set_property(DavResource *res, char *name, char *value) { |
306 char *pns; |
309 char *pns; |
307 char *pname; |
310 char *pname; |
308 dav_get_property_namespace(res->session->context, name, &pns, &pname); |
311 dav_get_property_namespace_str(res->session->context, name, &pns, &pname); |
309 dav_set_property_ns(res, pns, pname, value); |
312 dav_set_property_ns(res, pns, pname, value); |
310 } |
313 } |
311 |
314 |
312 void dav_set_property_ns(DavResource *res, char *ns, char *name, char *value) { |
315 void dav_set_property_ns(DavResource *res, char *ns, char *name, char *value) { |
313 UcxAllocator *a = res->session->mp->allocator; |
316 UcxAllocator *a = res->session->mp->allocator; |
330 } |
333 } |
331 |
334 |
332 void dav_remove_property(DavResource *res, char *name) { |
335 void dav_remove_property(DavResource *res, char *name) { |
333 char *pns; |
336 char *pns; |
334 char *pname; |
337 char *pname; |
335 dav_get_property_namespace(res->session->context, name, &pns, &pname); |
338 dav_get_property_namespace_str(res->session->context, name, &pns, &pname); |
336 dav_remove_property_ns(res, pns, pname); |
339 dav_remove_property_ns(res, pns, pname); |
337 } |
340 } |
338 |
341 |
339 void dav_remove_property_ns(DavResource *res, char *ns, char *name) { |
342 void dav_remove_property_ns(DavResource *res, char *ns, char *name) { |
340 DavResourceData *data = res->data; |
343 DavResourceData *data = res->data; |