diff -r 1f40ca07ae1b -r 839fefbdedc7 dav/db.c --- a/dav/db.c Sat Apr 20 13:01:58 2024 +0200 +++ b/dav/db.c Thu May 23 22:35:45 2024 +0200 @@ -57,9 +57,9 @@ SyncDatabase *db = malloc(sizeof(SyncDatabase)); db->resources = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, 2048); db->conflict = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, 16); - - db->resources->destructor_data = (cx_destructor_func)local_resource_free; - db->conflict->destructor_data = (cx_destructor_func)local_resource_free; + + cxDefineDestructor(db->resources, local_resource_free); + cxDefineDestructor(db->conflict, local_resource_free); xmlTextReaderPtr reader = xmlReaderForFile(db_file, NULL, 0); if(!reader) { @@ -79,10 +79,10 @@ int error = 0; while(xmlTextReaderRead(reader)) { int type = xmlTextReaderNodeType(reader); - const xmlChar *name = xmlTextReaderConstName(reader); + const xmlChar *xmlName = xmlTextReaderConstName(reader); if(type == XML_READER_TYPE_ELEMENT) { - if(xstreq(name, "resource")) { + if(xstreq(xmlName, "resource")) { LocalResource *res = process_resource(reader); if(res) { cxMapPut(db->resources, cx_hash_key_str(res->path), res); @@ -90,7 +90,7 @@ error = 1; break; } - } else if(xstreq(name, "conflict")) { + } else if(xstreq(xmlName, "conflict")) { LocalResource *res = process_conflict(reader); if(res) { cxMapPut(db->conflict, cx_hash_key_str(res->path), res); @@ -115,7 +115,7 @@ // TODO: rewrite using low level array CxList *parts = cxLinkedListCreateSimple(CX_STORE_POINTERS); - parts->destructor_data = (cx_destructor_func)filepart_free; + cxDefineDestructor(parts, filepart_free); FilePart *current_part = NULL; @@ -411,9 +411,8 @@ xmlTextWriterStartElement(writer, BAD_CAST "directory"); // write all resource entries - CxIterator i = cxMapIteratorValues(db->resources); - LocalResource *res; - cx_foreach(LocalResource*, res, i) { + CxIterator iter = cxMapIteratorValues(db->resources); + cx_foreach(LocalResource*, res, iter) { // xmlTextWriterStartElement(writer, BAD_CAST "resource"); @@ -688,8 +687,8 @@ */ // write all conflict entries - i = cxMapIteratorValues(db->conflict); - cx_foreach(LocalResource*, res, i) { + iter = cxMapIteratorValues(db->conflict); + cx_foreach(LocalResource*, res, iter) { // xmlTextWriterStartElement(writer, BAD_CAST "conflict"); @@ -825,10 +824,9 @@ } CxMap* create_hash_index(SyncDatabase *db) { - CxMap *hmap = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, db->resources->size + 64); + CxMap *hmap = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, cxMapSize(db->resources) + 64); CxIterator i = cxMapIteratorValues(db->resources); - LocalResource *res; cx_foreach(LocalResource*, res, i) { if(res->hash) { cxMapPut(hmap, cx_hash_key_str(res->hash), res);