dav/db.c

changeset 216
16d6b97fbf33
parent 215
781aee172901
child 222
7b73058d782e
--- a/dav/db.c	Thu Mar 17 15:06:26 2016 +0100
+++ b/dav/db.c	Thu Mar 17 20:24:37 2016 +0100
@@ -59,7 +59,7 @@
         xmlDocSetRootElement(doc, root);
         if(xmlSaveFormatFileEnc(db_file, doc, "UTF-8", 1) != -1) {
             db->resources = ucx_map_new(2048);
-            db->remove = ucx_map_new(8);
+            //db->remove = ucx_map_new(8);
         } else {
             free(db);
             db = NULL;
@@ -71,7 +71,8 @@
     free(db_file);
     
     db->resources = ucx_map_new(2048);
-    db->remove = ucx_map_new(16);
+    //db->remove = ucx_map_new(16);
+    db->conflict = ucx_map_new(16);
     int error = 0;
     while(xmlTextReaderRead(reader)) {
         int type = xmlTextReaderNodeType(reader);
@@ -86,10 +87,10 @@
                     error = 1;
                     break;
                 }
-            } else if(xstreq(name, "remove")) {
-                LocalResource *res = process_remove(reader);
+            } else if(xstreq(name, "conflict")) {
+                LocalResource *res = process_conflict(reader);
                 if(res) {
-                    ucx_map_cstr_put(db->remove, res->path, res);
+                    ucx_map_cstr_put(db->conflict, res->path, res);
                 } else {
                     error = 1;
                     break;
@@ -173,7 +174,7 @@
     }
 }
 
-LocalResource* process_remove(xmlTextReaderPtr reader) {
+LocalResource* process_conflict(xmlTextReaderPtr reader) {
     LocalResource *res = calloc(1, sizeof(LocalResource));
     
     int path = 0;
@@ -189,7 +190,7 @@
             const xmlChar *value = xmlTextReaderConstValue(reader);
             res->path = strdup((char*)value);
         } else if(XML_READER_TYPE_END_ELEMENT) {
-            if(xstreq(name, "remove")) {
+            if(xstreq(name, "conflict")) {
                 break;
             } else {
                 path = 0;
@@ -283,6 +284,7 @@
     }
     
     // write all remove entries
+/*
     i = ucx_map_iterator(db->remove);
     UCX_MAP_FOREACH(key, res, i) {
         // <remove>
@@ -296,6 +298,22 @@
         // </remove>
         xmlTextWriterEndElement(writer);
     }
+*/
+    
+    // write all conflict entries
+    i = ucx_map_iterator(db->conflict);
+    UCX_MAP_FOREACH(key, res, i) {
+        // <conflict>
+        xmlTextWriterStartElement(writer, BAD_CAST "conflict");
+        
+        xmlTextWriterWriteElement(
+                    writer,
+                    BAD_CAST "path",
+                    BAD_CAST res->path);
+        
+        // </conflict>
+        xmlTextWriterEndElement(writer);
+    }
     
     // end
     xmlTextWriterEndElement(writer);

mercurial