diff -r 1c598ee0d3d9 -r 6518b035a9df libidav/resource.c --- a/libidav/resource.c Tue Mar 18 11:48:22 2014 +0100 +++ b/libidav/resource.c Tue Mar 18 13:59:02 2014 +0100 @@ -50,6 +50,13 @@ return res; } +DavResource* dav_resource_new_child(DavSession *sn, DavResource *parent, char *name) { + char *path = util_concat_path(parent->path, name); + DavResource *res = dav_resource_new(sn, path); + free(path); + return res; +} + DavResource* dav_resource_new_href(DavSession *sn, char *href) { DavResource *res = ucx_mempool_calloc(sn->mp, 1, sizeof(DavResource)); @@ -395,8 +402,13 @@ } DavResource* dav_create_child(DavResource *parent, char *name) { - // TODO - return NULL; + DavResource *res = dav_resource_new_child(parent->session, parent, name); + if(dav_create(res)) { + // TODO: free resource + return NULL; + } else { + return res; + } } int dav_delete(DavResource *res) {