libidav/xml.c

changeset 532
aeda47714978
parent 526
e3c0440bd599
child 588
0cfe006fcad2
--- a/libidav/xml.c	Wed Mar 20 10:23:39 2019 +0100
+++ b/libidav/xml.c	Wed Mar 20 13:20:38 2019 +0100
@@ -251,7 +251,26 @@
 }
 
 
-
+DavXmlAttr* dav_copy_xml_attr(DavXmlAttr *attr) {
+    if(!attr) {
+        return NULL;
+    }
+    DavXmlAttr *newattr = NULL;
+    DavXmlAttr *prev = NULL;
+    while(attr) {
+        DavXmlAttr *n = calloc(1, sizeof(DavXmlAttr));
+        n->name = strdup(attr->name);
+        n->value = strdup(attr->value);
+        if(prev) {
+            prev->next = n;
+        } else {
+            newattr = n;
+        }
+        prev = n;
+        attr = attr->next;
+    }
+    return newattr;
+}
 
 DavXmlNode* dav_copy_node(DavXmlNode *node) {
     DavXmlNode *ret = NULL;
@@ -263,6 +282,7 @@
             copy->namespace = strdup(node->namespace);
             copy->name = strdup(node->name);
             copy->children = dav_copy_node(node->children);
+            copy->attributes = dav_copy_xml_attr(node->attributes);
         } else {
             copy->contentlength = node->contentlength;
             copy->content = malloc(node->contentlength+1);

mercurial