libidav/config.c

changeset 827
d9928f11970f
parent 826
b6e9fd3f1951
equal deleted inserted replaced
826:b6e9fd3f1951 827:d9928f11970f
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) { 101 DavConfig* dav_config_new(xmlDoc *doc) {
102 CxMempool *cfg_mp = cxMempoolCreate(128, NULL); 102 CxMempool *cfg_mp = cxMempoolCreate(128, NULL);
103 DavConfig *config = cxMalloc(cfg_mp->allocator, sizeof(DavConfig)); 103 DavConfig *config = cxMalloc(cfg_mp->allocator, sizeof(DavConfig));
104 memset(config, 0, sizeof(DavConfig)); 104 memset(config, 0, sizeof(DavConfig));
105 config->mp = cfg_mp; 105 config->mp = cfg_mp;
106 106
107 xmlDoc *doc = xmlNewDoc(BAD_CAST "1.0"); 107 if(!doc) {
108 xmlNode *root = xmlNewNode(NULL, BAD_CAST "configuration"); 108 doc = xmlNewDoc(BAD_CAST "1.0");
109 xmlDocSetRootElement(doc, root); 109 xmlNode *root = xmlNewNode(NULL, BAD_CAST "configuration");
110 xmlDocSetRootElement(doc, root);
111 }
110 config->doc = doc; 112 config->doc = doc;
111 113
112 return config; 114 return config;
113 } 115 }
114 116
119 *error = DAV_CONFIG_ERROR_XML; 121 *error = DAV_CONFIG_ERROR_XML;
120 } 122 }
121 return NULL; 123 return NULL;
122 } 124 }
123 125
124 DavConfig *config = dav_config_new(); 126 DavConfig *config = dav_config_new(doc);
125 CxMempool *cfg_mp = config->mp; 127 CxMempool *cfg_mp = config->mp;
126 cxMempoolRegister(cfg_mp, doc, (cx_destructor_func)xmlFreeDoc); 128 cxMempoolRegister(cfg_mp, doc, (cx_destructor_func)xmlFreeDoc);
127 129
128 DavCfgRepository *repos_begin = NULL; 130 DavCfgRepository *repos_begin = NULL;
129 DavCfgRepository *repos_end = NULL; 131 DavCfgRepository *repos_end = NULL;
482 repo->url.value = cx_strdup_a(config->mp->allocator, newurl); 484 repo->url.value = cx_strdup_a(config->mp->allocator, newurl);
483 } 485 }
484 486
485 void dav_repository_set_auth(DavConfig *config, DavCfgRepository *repo, cxstring user, cxstring password) { 487 void dav_repository_set_auth(DavConfig *config, DavCfgRepository *repo, cxstring user, cxstring password) {
486 const CxAllocator *a = config->mp->allocator; 488 const CxAllocator *a = config->mp->allocator;
487 repo->user.value = cx_strdup_a(a, user); 489 if(user.length > 0) {
488 char *pwenc = util_base64encode(password.ptr, password.length); 490 repo->user.value = cx_strdup_a(a, user);
489 repo->password.value = cx_strdup_a(a, cx_str(pwenc)); 491 }
490 free(pwenc); 492 if(password.length > 0) {
493 char *pwenc = util_base64encode(password.ptr, password.length);
494 repo->password.value = cx_strdup_a(a, cx_str(pwenc));
495 free(pwenc);
496 }
491 } 497 }
492 498
493 cxmutstr dav_repository_get_decodedpassword(DavCfgRepository *repo) { 499 cxmutstr dav_repository_get_decodedpassword(DavCfgRepository *repo) {
494 cxmutstr pw = { NULL, 0 }; 500 cxmutstr pw = { NULL, 0 };
495 if(repo->password.value.ptr) { 501 if(repo->password.value.ptr) {

mercurial