diff -r ba54fc8abdf1 -r a816e805e5db dav/db.c --- 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); + } + // xmlTextWriterEndElement(writer); }