libidav/config.c

changeset 826
b6e9fd3f1951
parent 823
04c60a353331
child 827
d9928f11970f
equal deleted inserted replaced
825:ca568c209dfd 826:b6e9fd3f1951
96 char *value = util_xml_get_text(node); 96 char *value = util_xml_get_text(node);
97 cbool->value = util_getboolean(value); 97 cbool->value = util_getboolean(value);
98 } 98 }
99 99
100 100
101 DavConfig* dav_config_new(void) {
102 CxMempool *cfg_mp = cxMempoolCreate(128, NULL);
103 DavConfig *config = cxMalloc(cfg_mp->allocator, sizeof(DavConfig));
104 memset(config, 0, sizeof(DavConfig));
105 config->mp = cfg_mp;
106
107 xmlDoc *doc = xmlNewDoc(BAD_CAST "1.0");
108 xmlNode *root = xmlNewNode(NULL, BAD_CAST "configuration");
109 xmlDocSetRootElement(doc, root);
110 config->doc = doc;
111
112 return config;
113 }
114
101 DavConfig* dav_config_load(cxmutstr xmlfilecontent, int *error) { 115 DavConfig* dav_config_load(cxmutstr xmlfilecontent, int *error) {
102 xmlDoc *doc = xmlReadMemory(xmlfilecontent.ptr, xmlfilecontent.length, NULL, NULL, 0); 116 xmlDoc *doc = xmlReadMemory(xmlfilecontent.ptr, xmlfilecontent.length, NULL, NULL, 0);
103 if(!doc) { 117 if(!doc) {
104 if(error) { 118 if(error) {
105 *error = DAV_CONFIG_ERROR_XML; 119 *error = DAV_CONFIG_ERROR_XML;
106 } 120 }
107 return NULL; 121 return NULL;
108 } 122 }
109 123
110 CxMempool *cfg_mp = cxMempoolCreate(128, NULL); 124 DavConfig *config = dav_config_new();
125 CxMempool *cfg_mp = config->mp;
111 cxMempoolRegister(cfg_mp, doc, (cx_destructor_func)xmlFreeDoc); 126 cxMempoolRegister(cfg_mp, doc, (cx_destructor_func)xmlFreeDoc);
112 DavConfig *config = cxMalloc(cfg_mp->allocator, sizeof(DavConfig));
113 memset(config, 0, sizeof(DavConfig));
114 config->mp = cfg_mp;
115 config->doc = doc;
116 127
117 DavCfgRepository *repos_begin = NULL; 128 DavCfgRepository *repos_begin = NULL;
118 DavCfgRepository *repos_end = NULL; 129 DavCfgRepository *repos_end = NULL;
119 DavCfgKey *keys_begin = NULL; 130 DavCfgKey *keys_begin = NULL;
120 DavCfgKey *keys_end = NULL; 131 DavCfgKey *keys_end = NULL;
721 732
722 733
723 734
724 735
725 DavCfgRepository* dav_config_get_repository(DavConfig *config, cxstring name) { 736 DavCfgRepository* dav_config_get_repository(DavConfig *config, cxstring name) {
737 if(!config) {
738 return NULL;
739 }
726 DavCfgRepository *repo = config->repositories; 740 DavCfgRepository *repo = config->repositories;
727 while(repo) { 741 while(repo) {
728 if(!cx_strcmp(cx_strcast(repo->name.value), name)) { 742 if(!cx_strcmp(cx_strcast(repo->name.value), name)) {
729 return repo; 743 return repo;
730 } 744 }

mercurial