dav/scfg.c

changeset 401
3bb3210f3e6e
parent 368
11797f33bc24
child 402
babdf40dd22c
equal deleted inserted replaced
400:90c6bfa94fa2 401:3bb3210f3e6e
90 } else { 90 } else {
91 return ucx_list_append(list, regex); 91 return ucx_list_append(list, regex);
92 } 92 }
93 } 93 }
94 94
95 static int scfg_load_filter(xmlNode *node, 95 static int scfg_load_filter(
96 UcxList **include, UcxList **exclude) { 96 xmlNode *node,
97 UcxList **include,
98 UcxList **exclude,
99 SyncTagFilter **tagfilter)
100 {
97 node = node->children; 101 node = node->children;
98 102
99 while(node) { 103 while(node) {
100 if(node->type == XML_ELEMENT_NODE) { 104 if(node->type == XML_ELEMENT_NODE) {
101 char *value = util_xml_get_text(node); 105 char *value = util_xml_get_text(node);
104 *include = add_regex_pattern(*include, value, node->line); 108 *include = add_regex_pattern(*include, value, node->line);
105 } 109 }
106 } else if(xstreq(node->name, "exclude")) { 110 } else if(xstreq(node->name, "exclude")) {
107 if(value) { 111 if(value) {
108 *exclude = add_regex_pattern(*exclude, value, node->line); 112 *exclude = add_regex_pattern(*exclude, value, node->line);
113 }
114 } else if(xstreq(node->name, "tags")) {
115 if(value) {
116 *tagfilter = parse_tagfilter_string(value);
117 if(!*tagfilter) {
118 print_error(
119 node->line,
120 "malformed tag filter: %s\n",
121 value);
122 return 1;
123 }
109 } 124 }
110 } else { 125 } else {
111 print_error(node->line, 126 print_error(node->line,
112 "unknown filter config element: %s\n", node->name); 127 "unknown filter config element: %s\n", node->name);
113 return 1; 128 return 1;
240 char *repository = NULL; 255 char *repository = NULL;
241 char *database = NULL; 256 char *database = NULL;
242 TagConfig *tagconfig = NULL; 257 TagConfig *tagconfig = NULL;
243 UcxList *include = NULL; 258 UcxList *include = NULL;
244 UcxList *exclude = NULL; 259 UcxList *exclude = NULL;
260 SyncTagFilter *tagfilter = NULL;
245 int max_retry = 0; 261 int max_retry = 0;
246 int allow_cmd = SYNC_CMD_PULL | SYNC_CMD_PUSH | SYNC_CMD_ARCHIVE; 262 int allow_cmd = SYNC_CMD_PULL | SYNC_CMD_PUSH | SYNC_CMD_ARCHIVE;
247 bool backuppull = false; 263 bool backuppull = false;
248 bool lockpull = false; 264 bool lockpull = false;
249 bool lockpush = false; 265 bool lockpush = false;
273 } else if(xstreq(node->name, "collection")) { 289 } else if(xstreq(node->name, "collection")) {
274 collection = value; 290 collection = value;
275 } else if(xstreq(node->name, "repository")) { 291 } else if(xstreq(node->name, "repository")) {
276 repository = value; 292 repository = value;
277 } else if(xstreq(node->name, "filter")) { 293 } else if(xstreq(node->name, "filter")) {
278 if(scfg_load_filter(node, &include, &exclude)) { 294 if(scfg_load_filter(node, &include, &exclude, &tagfilter)) {
279 return 1; 295 return 1;
280 } 296 }
281 } else if(xstreq(node->name, "database")) { 297 } else if(xstreq(node->name, "database")) {
282 database = value; 298 database = value;
283 } else if(xstreq(node->name, "tags")) { 299 } else if(xstreq(node->name, "tags")) {

mercurial