libidav/webdav.c

changeset 607
5dc7fe41e8f8
parent 587
3c917df041b8
child 609
dc3d70848c7c
--- a/libidav/webdav.c	Sun Jun 16 13:14:24 2019 +0200
+++ b/libidav/webdav.c	Sat Jun 22 16:36:52 2019 +0200
@@ -70,61 +70,24 @@
     }
     
     // add DAV: namespace
-    DavNamespace *davns = malloc(sizeof(DavNamespace));
-    if(!davns) {
-        free(davns);
-        dav_context_destroy(context);
-        return NULL;
-    }
-    davns->prefix = strdup("D");
-    if(!davns->prefix) {
-        free(davns);
-        dav_context_destroy(context);
-        return NULL;
-    }
-    davns->name = strdup("DAV:");
-    if(!davns->name) {
-        free(davns->prefix);
-        free(davns);
-        dav_context_destroy(context);
-        return NULL;
-    }
-    if(ucx_map_cstr_put(context->namespaces, "D", davns)) {
-        free(davns->prefix);
-        free(davns->name);
-        free(davns);
+    if(dav_add_namespace(context, "D", "DAV:")) {
         dav_context_destroy(context);
         return NULL;
     }
     
+    
     // add idav namespace
-    DavNamespace *idavns = malloc(sizeof(DavNamespace));
-    if(!idavns) {
-        free(idavns);
-        dav_context_destroy(context);
-        return NULL;
-    }
-    idavns->prefix = strdup("idav");
-    if(!idavns->prefix) {
-        free(idavns);
-        dav_context_destroy(context);
-        return NULL;
-    }
-    idavns->name = strdup(DAV_NS);
-    if(!idavns->name) {
-        free(idavns->prefix);
-        free(idavns);
-        dav_context_destroy(context);
-        return NULL;
-    }
-    if(ucx_map_cstr_put(context->namespaces, "idav", idavns)) {
-        free(idavns->prefix);
-        free(idavns->name);
-        free(idavns);
+    if(dav_add_namespace(context, "idav", DAV_NS)) {
         dav_context_destroy(context);
         return NULL;
     }
     
+    // add idavprops namespace
+    if(dav_add_namespace(context, "idavprops", DAV_PROPS_NS)) {
+        dav_context_destroy(context);
+        return NULL;
+    }   
+
     return context;
 }
 
@@ -195,9 +158,24 @@
     if(!namespace) {
         return 1;
     }
-    namespace->prefix = strdup(prefix);
-    namespace->name = strdup(name);
-    return ucx_map_cstr_put(context->namespaces, prefix, namespace);
+    
+    char *p = strdup(prefix);
+    char *n = strdup(name);
+    
+    int err = 0;
+    if(p && n) {
+        namespace->prefix = p;
+        namespace->name = n;
+        err = ucx_map_cstr_put(context->namespaces, prefix, namespace);
+    }
+    
+    if(err) {
+        free(namespace);
+        if(p) free(p);
+        if(n) free(n);
+    }
+    
+    return err;
 }
 
 DavNamespace* dav_get_namespace(DavContext *context, const char *prefix) {

mercurial