diff -r 8c37028f5024 -r 4bccc18820e8 libidav/webdav.c --- a/libidav/webdav.c Sat Jun 06 10:46:29 2015 +0200 +++ b/libidav/webdav.c Tue Jul 07 20:47:02 2015 +0200 @@ -208,12 +208,14 @@ return ucx_map_sstr_get(context->namespaces, prefix); } -void dav_get_property_namespace( +void dav_get_property_namespace_str( DavContext *ctx, char *prefixed_name, char **ns, char **name) { + // TODO: rewrite using dav_get_property_ns + char *pname = strchr(prefixed_name, ':'); char *pns = "DAV:"; if(pname) { @@ -234,6 +236,31 @@ *name = pname; } +DavNamespace* dav_get_property_namespace( + DavContext *ctx, + char *prefixed_name, + char **name) +{ + char *pname = strchr(prefixed_name, ':'); + if(pname) { + DavNamespace *ns = dav_get_namespace_s( + ctx, + sstrn(prefixed_name, pname-prefixed_name)); + if(ns) { + *name = pname +1; + return ns; + } else { + *name = NULL; + return NULL; + } + } else { + *name = prefixed_name; + return dav_get_namespace_s(ctx, S("D")); + } +} + +// TODO: add sstr_t version of dav_get_property_ns + DavResource* dav_get(DavSession *sn, char *path, char *properties) { CURL *handle = sn->handle;