50 char *dav_dir = util_concat_path(ENV_HOME, ".dav"); |
50 char *dav_dir = util_concat_path(ENV_HOME, ".dav"); |
51 char *db_file = util_concat_path(dav_dir, name); |
51 char *db_file = util_concat_path(dav_dir, name); |
52 free(dav_dir); |
52 free(dav_dir); |
53 |
53 |
54 SyncDatabase *db = malloc(sizeof(SyncDatabase)); |
54 SyncDatabase *db = malloc(sizeof(SyncDatabase)); |
|
55 db->resources = ucx_map_new(2048); |
|
56 db->conflict = ucx_map_new(16); |
|
57 |
55 xmlTextReaderPtr reader = xmlReaderForFile(db_file, NULL, 0); |
58 xmlTextReaderPtr reader = xmlReaderForFile(db_file, NULL, 0); |
56 if(!reader) { |
59 if(!reader) { |
57 xmlDoc *doc = doc = xmlNewDoc(BAD_CAST "1.0"); |
60 xmlDoc *doc = doc = xmlNewDoc(BAD_CAST "1.0"); |
58 xmlNode *root = xmlNewNode(NULL, BAD_CAST "directory"); |
61 xmlNode *root = xmlNewNode(NULL, BAD_CAST "directory"); |
59 xmlDocSetRootElement(doc, root); |
62 xmlDocSetRootElement(doc, root); |
60 if(xmlSaveFormatFileEnc(db_file, doc, "UTF-8", 1) != -1) { |
63 if(!xmlSaveFormatFileEnc(db_file, doc, "UTF-8", 1) != -1) { |
61 db->resources = ucx_map_new(2048); |
64 destroy_db(db); |
62 db->conflict = ucx_map_new(16); |
|
63 } else { |
|
64 free(db); |
|
65 db = NULL; |
65 db = NULL; |
66 } |
66 } |
67 xmlFreeDoc(doc); |
67 xmlFreeDoc(doc); |
68 free(db_file); |
68 free(db_file); |
69 return db; |
69 return db; |
70 } |
70 } |
71 free(db_file); |
71 free(db_file); |
72 |
72 |
73 db->resources = ucx_map_new(2048); |
|
74 db->conflict = ucx_map_new(16); |
|
75 int error = 0; |
73 int error = 0; |
76 while(xmlTextReaderRead(reader)) { |
74 while(xmlTextReaderRead(reader)) { |
77 int type = xmlTextReaderNodeType(reader); |
75 int type = xmlTextReaderNodeType(reader); |
78 const xmlChar *name = xmlTextReaderConstName(reader); |
76 const xmlChar *name = xmlTextReaderConstName(reader); |
79 |
77 |