libidav/resource.c

branch
dav-2
changeset 881
64989511f6c3
parent 872
d24de29ad1fe
child 882
86e61b4ef708
equal deleted inserted replaced
880:5f8ccd1d59bd 881:64989511f6c3
279 resource->path); 279 resource->path);
280 } 280 }
281 return resource->href; 281 return resource->href;
282 } 282 }
283 283
284 CxTreeIterator dav_resource_iterator(DavResource *res) {
285 return cx_tree_iterator(res, FALSE, offsetof(DavResource, children), offsetof(DavResource, next));
286 }
287
288 CxTreeVisitor dav_resource_visitor(DavResource *res) {
289 return cx_tree_visitor(res, offsetof(DavResource, children), offsetof(DavResource, next));
290 }
291
292 CxMap* dav_resource_map(DavResource *res) {
293 CxMap *map = cxHashMapCreate(res->session->mp->allocator, CX_STORE_POINTERS, 16);
294 if(!map) {
295 return NULL;
296 }
297 CxTreeIterator i = dav_resource_iterator(res);
298 int error = 0;
299 cx_foreach(DavResource *, res, i) {
300 if(cxMapPut(map, res->path, res)) {
301 error = 1;
302 }
303 }
304 if(!error) {
305 cxMapRehash(map);
306 return map;
307 } else {
308 cxMapFree(map);
309 return NULL;
310 }
311 }
312
284 void resource_add_prop(DavResource *res, const char *ns, const char *name, DavXmlNode *val) { 313 void resource_add_prop(DavResource *res, const char *ns, const char *name, DavXmlNode *val) {
285 DavSession *sn = res->session; 314 DavSession *sn = res->session;
286 315
287 DavNamespace *namespace = dav_session_malloc(sn, sizeof(DavNamespace)); 316 DavNamespace *namespace = dav_session_malloc(sn, sizeof(DavNamespace));
288 namespace->prefix = NULL; 317 namespace->prefix = NULL;

mercurial