dav/db.c

changeset 560
a816e805e5db
parent 552
e1a12762bf0a
child 567
b0ce8b27978b
--- a/dav/db.c	Tue Apr 09 18:23:23 2019 +0200
+++ b/dav/db.c	Wed Apr 10 11:03:37 2019 +0200
@@ -329,23 +329,34 @@
 LocalResource* process_conflict(xmlTextReaderPtr reader) {
     LocalResource *res = calloc(1, sizeof(LocalResource));
     
-    int path = 0;
+    int field = 0;
     while(xmlTextReaderRead(reader)) {
         int type = xmlTextReaderNodeType(reader);
         const xmlChar *name = xmlTextReaderConstName(reader);
         
         if(type == XML_READER_TYPE_ELEMENT) {
             if(xstreq(name, "path")) {
-                path = 1;
+                field = 1;
+            } else if(xstreq(name, "source")) {
+                field = 2;
             }
-        } else if(type == XML_READER_TYPE_TEXT && path) {
+        } else if(type == XML_READER_TYPE_TEXT) {
             const xmlChar *value = xmlTextReaderConstValue(reader);
-            res->path = strdup((char*)value);
+            switch(field) {
+                case 1: {
+                    res->path = strdup((const char*)value);
+                    break;
+                }
+                case 2: {
+                    res->conflict_source = strdup((const char*)value);
+                    break;
+                }
+            }
         } else if(XML_READER_TYPE_END_ELEMENT) {
             if(xstreq(name, "conflict")) {
                 break;
             } else {
-                path = 0;
+                field = 0;
             }
         }
     }
@@ -609,6 +620,13 @@
                     BAD_CAST "path",
                     BAD_CAST res->path);
         
+        if(res->conflict_source) {
+            xmlTextWriterWriteElement(
+                    writer,
+                    BAD_CAST "source",
+                    BAD_CAST res->conflict_source);
+        }
+        
         // </conflict>
         xmlTextWriterEndElement(writer);
     }

mercurial