Sun, 17 Dec 2023 14:25:34 +0100
[Makefile] fix missing rules preventing dry-runs
We have to support dry-runs, because many IDEs are using
dry-runs to collect build information.
Some rules have dependencies that expect certain files or
directories to be just present. We added respective build
rules which invoke the test program. This way, the behavior
when running make normally is exactly the same, but dry-runs
are also not failing now.
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1 | /* |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
3 | * |
576
62cc92445234
store relative link in LocalResource
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
549
diff
changeset
|
4 | * Copyright 2019 Olaf Wintermann. All rights reserved. |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
5 | * |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
6 | * Redistribution and use in source and binary forms, with or without |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
7 | * modification, are permitted provided that the following conditions are met: |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
8 | * |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
9 | * 1. Redistributions of source code must retain the above copyright |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
10 | * notice, this list of conditions and the following disclaimer. |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
11 | * |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
12 | * 2. Redistributions in binary form must reproduce the above copyright |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
13 | * notice, this list of conditions and the following disclaimer in the |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
14 | * documentation and/or other materials provided with the distribution. |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
15 | * |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
26 | * POSSIBILITY OF SUCH DAMAGE. |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
27 | */ |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
28 | |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
29 | #include <stdio.h> |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
30 | #include <stdlib.h> |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
31 | #include <string.h> |
65
d4077e8175f3
added optional trash for deleted files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
58
diff
changeset
|
32 | #include <errno.h> |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
33 | #include <libidav/utils.h> |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
34 | #include <cx/hash_map.h> |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
35 | #include <cx/utils.h> |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
36 | #include <cx/linked_list.h> |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
37 | #include <cx/printf.h> |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
38 | |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
39 | #include "scfg.h" |
319
2433b5969d44
disables automatic creation of .dav directory in dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
316
diff
changeset
|
40 | #include "config.h" |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
41 | |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
42 | #define xstreq(a,b) xmlStrEqual(BAD_CAST a, BAD_CAST b) |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
43 | |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
44 | |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
45 | #define print_error(lineno, ...) \ |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
46 | do {\ |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
47 | fprintf(stderr, "Error (sync.xml line %u): ", lineno); \ |
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
48 | fprintf(stderr, __VA_ARGS__); \ |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
49 | fprintf(stderr, "Abort.\n"); \ |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
50 | } while(0); |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
51 | #define print_warning(lineno, ...) \ |
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
52 | do {\ |
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
53 | fprintf(stderr, "Warning (sync.xml line %u): ", lineno); \ |
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
54 | fprintf(stderr, __VA_ARGS__); \ |
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
55 | } while(0); |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
56 | |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
57 | #ifdef _WIN32 |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
58 | #define ENV_HOME getenv("USERPROFILE") |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
59 | #else |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
60 | #define ENV_HOME getenv("HOME") |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
61 | #endif /* _WIN32 */ |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
62 | |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
63 | static CxMap *directories; |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
64 | |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
65 | CxIterator scfg_directory_iterator() { |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
66 | return cxMapIteratorValues(directories); |
256
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
67 | } |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
68 | |
200
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
69 | static int create_default_sync_config(char *file) { |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
70 | FILE *out = fopen(file, "w"); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
71 | if(!out) { |
253
1d2be1b31e70
There has never been deliberately fucked up error handling for missing sync.xml.
Mike Becker <universe@uap-core.de>
parents:
252
diff
changeset
|
72 | perror("Cannot create config file"); |
200
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
73 | return -1; |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
74 | } |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
75 | |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
76 | fputs("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n", out); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
77 | fputs("<configuration>\n", out); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
78 | fputs("</configuration>\n", out); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
79 | fclose(out); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
80 | |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
81 | return 0; |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
82 | } |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
83 | |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
84 | static void add_regex_pattern(CxList *list, char *value, |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
85 | unsigned short xmlline) { |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
86 | regex_t regex; |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
87 | if (regcomp(®ex, value, REG_EXTENDED|REG_NOSUB)) { |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
88 | print_warning(xmlline, |
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
89 | "Invalid regular expression (%s) ... skipped\n", value); |
58
1708cba82ca3
added include / exclude patterns
Mike Becker <universe@uap-core.de>
parents:
56
diff
changeset
|
90 | } else { |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
91 | cxListAdd(list, ®ex); |
58
1708cba82ca3
added include / exclude patterns
Mike Becker <universe@uap-core.de>
parents:
56
diff
changeset
|
92 | } |
1708cba82ca3
added include / exclude patterns
Mike Becker <universe@uap-core.de>
parents:
56
diff
changeset
|
93 | } |
1708cba82ca3
added include / exclude patterns
Mike Becker <universe@uap-core.de>
parents:
56
diff
changeset
|
94 | |
401
3bb3210f3e6e
adds syncdir config element for tag filters
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
368
diff
changeset
|
95 | static int scfg_load_filter( |
3bb3210f3e6e
adds syncdir config element for tag filters
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
368
diff
changeset
|
96 | xmlNode *node, |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
97 | CxList *include, |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
98 | CxList *exclude, |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
99 | CxList *tags) |
401
3bb3210f3e6e
adds syncdir config element for tag filters
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
368
diff
changeset
|
100 | { |
244
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
101 | node = node->children; |
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
102 | |
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
103 | while(node) { |
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
104 | if(node->type == XML_ELEMENT_NODE) { |
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
105 | char *value = util_xml_get_text(node); |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
106 | if(xstreq(node->name, "include")) { |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
107 | if(value) { |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
108 | add_regex_pattern(include, value, node->line); |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
109 | } |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
110 | } else if(xstreq(node->name, "exclude")) { |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
111 | if(value) { |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
112 | add_regex_pattern(exclude, value, node->line); |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
113 | } |
401
3bb3210f3e6e
adds syncdir config element for tag filters
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
368
diff
changeset
|
114 | } else if(xstreq(node->name, "tags")) { |
3bb3210f3e6e
adds syncdir config element for tag filters
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
368
diff
changeset
|
115 | if(value) { |
417
f340460a8b5d
disables tagfilter for directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
116 | SyncTagFilter *tagfilter = parse_tagfilter_string( |
414
ea50585ec9d9
adds tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
117 | value, DAV_SYNC_TAGFILTER_SCOPE_RESOURCE); |
417
f340460a8b5d
disables tagfilter for directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
118 | if(!tagfilter) { |
401
3bb3210f3e6e
adds syncdir config element for tag filters
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
368
diff
changeset
|
119 | print_error( |
3bb3210f3e6e
adds syncdir config element for tag filters
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
368
diff
changeset
|
120 | node->line, |
3bb3210f3e6e
adds syncdir config element for tag filters
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
368
diff
changeset
|
121 | "malformed tag filter: %s\n", |
3bb3210f3e6e
adds syncdir config element for tag filters
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
368
diff
changeset
|
122 | value); |
3bb3210f3e6e
adds syncdir config element for tag filters
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
368
diff
changeset
|
123 | return 1; |
416
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
124 | } else { |
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
125 | // get scope |
425
ae4d89c3477c
fixes dav list return value
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
417
diff
changeset
|
126 | xmlChar *scope = xmlGetNoNsProp(node, BAD_CAST "scope"); |
416
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
127 | if(scope) { |
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
128 | if(xstreq(scope, "resource")) |
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
129 | { |
417
f340460a8b5d
disables tagfilter for directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
130 | tagfilter->scope = |
416
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
131 | DAV_SYNC_TAGFILTER_SCOPE_RESOURCE; |
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
132 | } else if(xstreq(scope, "collection")) { |
417
f340460a8b5d
disables tagfilter for directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
133 | tagfilter->scope = |
416
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
134 | DAV_SYNC_TAGFILTER_SCOPE_COLLECTION; |
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
135 | } else if(xstreq(scope, "all")) { |
417
f340460a8b5d
disables tagfilter for directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
136 | tagfilter->scope = |
416
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
137 | DAV_SYNC_TAGFILTER_SCOPE_RESOURCE |
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
138 | | DAV_SYNC_TAGFILTER_SCOPE_COLLECTION; |
417
f340460a8b5d
disables tagfilter for directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
139 | } else { |
f340460a8b5d
disables tagfilter for directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
140 | tagfilter->scope = |
f340460a8b5d
disables tagfilter for directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
141 | DAV_SYNC_TAGFILTER_SCOPE_RESOURCE; |
416
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
142 | } |
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
143 | } |
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
144 | xmlFree(scope); |
417
f340460a8b5d
disables tagfilter for directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
145 | |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
146 | cxListAdd(tags, tagfilter); |
401
3bb3210f3e6e
adds syncdir config element for tag filters
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
368
diff
changeset
|
147 | } |
3bb3210f3e6e
adds syncdir config element for tag filters
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
368
diff
changeset
|
148 | } |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
149 | } else { |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
150 | print_error(node->line, |
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
151 | "unknown filter config element: %s\n", node->name); |
244
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
152 | return 1; |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
153 | } |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
154 | if(!value) { |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
155 | print_error(node->line, |
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
156 | "missing value for filter: %s\n", node->name); |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
157 | return 1; |
244
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
158 | } |
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
159 | } |
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
160 | |
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
161 | node = node->next; |
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
162 | } |
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
163 | |
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
164 | return 0; |
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
165 | } |
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
166 | |
648
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
167 | Filter* parse_filter(xmlNode *node) { |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
168 | CxList *include = cxLinkedListCreate(cxDefaultAllocator, NULL, sizeof(regex_t)); |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
169 | CxList *exclude = cxLinkedListCreate(cxDefaultAllocator, NULL, sizeof(regex_t)); |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
170 | CxList *tags = cxLinkedListCreate(cxDefaultAllocator, NULL, CX_STORE_POINTERS); |
648
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
171 | |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
172 | include->simple_destructor = (cx_destructor_func)regfree; |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
173 | exclude->simple_destructor = (cx_destructor_func)regfree; |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
174 | // TODO: set tags destructor |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
175 | |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
176 | if(scfg_load_filter(node, include, exclude, tags)) { |
648
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
177 | return NULL; |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
178 | } |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
179 | |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
180 | Filter *filter = malloc(sizeof(Filter)); |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
181 | filter->include = include; |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
182 | filter->exclude = exclude; |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
183 | filter->tags = tags; |
658
67c9f88b13c7
adds missing return in parse_filter()
Mike Becker <universe@uap-core.de>
parents:
649
diff
changeset
|
184 | return filter; |
648
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
185 | } |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
186 | |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
187 | void init_default_filter(Filter *filter) { |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
188 | if(filter->include->size == 0) { |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
189 | regex_t matchall; |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
190 | regcomp(&matchall, ".*", REG_NOSUB); |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
191 | cxListAdd(filter->include, &matchall); |
648
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
192 | } |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
193 | /* |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
194 | if(!filter->exclude) { |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
195 | regex_t *matchnothing = malloc(sizeof(regex_t)); |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
196 | regcomp(matchnothing, "///", REG_NOSUB); |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
197 | filter->exclude = ucx_list_append(NULL, matchnothing); |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
198 | } |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
199 | */ |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
200 | } |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
201 | |
361
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
202 | static TagFormat str2tagformat(const char *str) { |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
203 | if(!strcmp(str, "text")) { |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
204 | return TAG_FORMAT_TEXT; |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
205 | } else if(!strcmp(str, "csv")) { |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
206 | return TAG_FORMAT_CSV; |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
207 | } else if(!strcmp(str, "xml")) { |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
208 | return TAG_FORMAT_XML; |
363
e9ed8e130ccf
adds support for macos file tags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
361
diff
changeset
|
209 | } else if(!strcmp(str, "macos")) { |
e9ed8e130ccf
adds support for macos file tags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
361
diff
changeset
|
210 | return TAG_FORMAT_MACOS; |
361
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
211 | } |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
212 | return TAG_FORMAT_UNKNOWN; |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
213 | } |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
214 | |
647
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
215 | #define CHECK_VALUE_RET_NULL(element, value) if(!(value)) \ |
664
d066a89d5e87
fix tagconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
661
diff
changeset
|
216 | {print_error(element->line, "missing value element: %s\n", element->name); return NULL;} |
491
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
217 | |
361
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
218 | static TagConfig* parse_tagconfig(xmlNode *node) { |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
219 | TagConfig conf; |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
220 | conf.store = TAG_STORE_XATTR; |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
221 | conf.local_format = TAG_FORMAT_TEXT; |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
222 | conf.server_format = TAG_FORMAT_XML; |
368
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
223 | conf.xattr_name = NULL; |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
224 | conf.detect_changes = false; |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
225 | conf.conflict = TAG_NO_CONFLICT; |
361
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
226 | xmlNode *c = node->children; |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
227 | |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
228 | // TODO: error handling |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
229 | while(c) { |
367
4a6a59f89f9f
adds dav-sync config for autodetecting tag changes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
364
diff
changeset
|
230 | if(c->type == XML_ELEMENT_NODE) { |
361
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
231 | char *value = util_xml_get_text(c); |
491
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
232 | if(xstreq(c->name, "local-store")) { |
647
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
233 | CHECK_VALUE_RET_NULL(c, value); |
491
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
234 | if(xstreq(value, "xattr")) { |
361
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
235 | conf.store = TAG_STORE_XATTR; |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
236 | } else { |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
237 | return NULL; |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
238 | } |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
239 | |
425
ae4d89c3477c
fixes dav list return value
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
417
diff
changeset
|
240 | xmlChar *format = xmlGetNoNsProp(node, BAD_CAST "format"); |
416
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
241 | if(format) { |
425
ae4d89c3477c
fixes dav list return value
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
417
diff
changeset
|
242 | conf.local_format = str2tagformat((char*)format); |
416
d7a086201a6e
adds attribute for tagfilter scope
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
243 | xmlFree(format); |
361
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
244 | } |
368
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
245 | } else if(xstreq(c->name, "detect-changes")) { |
647
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
246 | CHECK_VALUE_RET_NULL(c, value); |
368
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
247 | conf.detect_changes = util_getboolean(value); |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
248 | } else if(xstreq(c->name, "xattr-name")) { |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
249 | if(!value) { |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
250 | return NULL; |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
251 | } |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
252 | conf.xattr_name = strdup(value); |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
253 | } else if(xstreq(c->name, "on-conflict")) { |
647
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
254 | CHECK_VALUE_RET_NULL(c, value); |
368
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
255 | if(xstreq(value, "no_conflict")) { |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
256 | conf.conflict = TAG_NO_CONFLICT; |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
257 | } else if(xstreq(value, "keep_local")) { |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
258 | conf.conflict = TAG_KEEP_LOCAL; |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
259 | } else if(xstreq(value, "keep_remote")) { |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
260 | conf.conflict = TAG_KEEP_REMOTE; |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
261 | } else if(xstreq(value, "merge")) { |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
262 | conf.conflict = TAG_MERGE; |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
263 | } else { |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
264 | fprintf(stderr, "on-conflict: unknown value: %s\n", value); |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
265 | return NULL; |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
266 | } |
361
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
267 | } |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
268 | } |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
269 | c = c->next; |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
270 | } |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
271 | |
368
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
272 | if(conf.store == TAG_STORE_XATTR && !conf.xattr_name) { |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
273 | switch(conf.local_format) { |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
274 | default: |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
275 | case TAG_FORMAT_TEXT: |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
276 | case TAG_FORMAT_CSV: |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
277 | case TAG_FORMAT_XML: conf.xattr_name = strdup(DEFAULT_TAG_XATTR); break; |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
278 | case TAG_FORMAT_MACOS: conf.xattr_name = strdup(MACOS_TAG_XATTR); break; |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
279 | } |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
280 | } |
11797f33bc24
adds more tag config options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
367
diff
changeset
|
281 | |
361
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
282 | TagConfig *tagconfig = malloc(sizeof(TagConfig)); |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
283 | *tagconfig = conf; |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
284 | return tagconfig; |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
285 | } |
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
286 | |
534
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
287 | static SplitConfig* parse_split(xmlNode *node) { |
648
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
288 | Filter *filter = NULL; |
534
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
289 | char *minsize = NULL; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
290 | char *blocksize = NULL; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
291 | |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
292 | xmlNode *c = node->children; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
293 | while(c) { |
648
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
294 | if(xstreq(c->name, "filter")) { |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
295 | filter = parse_filter(node); |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
296 | if(filter->tags) { |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
297 | fprintf(stderr, "splitconfig: tag filter not supported\n"); |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
298 | free_filter(*filter); |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
299 | free(filter); |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
300 | return NULL; |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
301 | } |
534
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
302 | } else if(xstreq(c->name, "minsize")) { |
648
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
303 | minsize = util_xml_get_text(c); |
534
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
304 | } else if(xstreq(c->name, "blocksize")) { |
648
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
305 | blocksize = util_xml_get_text(c); |
534
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
306 | } |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
307 | c = c->next; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
308 | } |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
309 | |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
310 | uint64_t sz = 0; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
311 | if(!blocksize) { |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
312 | fprintf(stderr, "splitconfig: no blocksize specified\n"); |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
313 | return NULL; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
314 | } |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
315 | size_t bsz_len = strlen(blocksize); |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
316 | if(bsz_len < 2) { |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
317 | fprintf(stderr, "splitconfig: blocksize too small\n"); |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
318 | return NULL; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
319 | } |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
320 | |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
321 | if(!util_szstrtouint(blocksize, &sz)) { |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
322 | fprintf(stderr, "splitconfig: blocksize is not a number\n"); |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
323 | return NULL; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
324 | } |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
325 | |
648
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
326 | if(!filter && !minsize) { |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
327 | fprintf(stderr, "splitconfig: filter or minsize must be specified\n"); |
534
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
328 | return NULL; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
329 | } |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
330 | |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
331 | int64_t minsz = -1; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
332 | if(minsize) { |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
333 | uint64_t m; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
334 | if(!util_szstrtouint(minsize, &m)) { |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
335 | fprintf(stderr, "splitconfig: minsize is not a number\n"); |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
336 | return NULL; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
337 | } |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
338 | minsz = (int64_t)m; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
339 | } |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
340 | |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
341 | SplitConfig *sc = calloc(1, sizeof(SplitConfig)); |
648
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
342 | if(filter) { |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
343 | init_default_filter(filter); |
536
877f7c4a203b
adds file splitting feature to dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
534
diff
changeset
|
344 | } |
534
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
345 | sc->minsize = minsz; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
346 | sc->blocksize = (size_t)sz; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
347 | return sc; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
348 | } |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
349 | |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
350 | static CxList* parse_splitconfig(xmlNode *node, int *error) { |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
351 | CxList *splitconfig = cxLinkedListCreateSimple(CX_STORE_POINTERS); |
534
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
352 | int err = 0; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
353 | xmlNode *c = node->children; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
354 | while(c) { |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
355 | if(c->type == XML_ELEMENT_NODE && xstreq(c->name, "split")) { |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
356 | SplitConfig *sc = parse_split(c); |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
357 | if(sc) { |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
358 | cxListAdd(splitconfig, sc); |
534
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
359 | } else { |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
360 | err = 1; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
361 | break; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
362 | } |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
363 | } |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
364 | c = c->next; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
365 | } |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
366 | |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
367 | if(error) { |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
368 | *error = err; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
369 | } |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
370 | return splitconfig; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
371 | } |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
372 | |
491
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
373 | static Versioning* parse_versioning_config(xmlNode *node) { |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
374 | Versioning v; |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
375 | v.always = FALSE; |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
376 | v.type = VERSIONING_SIMPLE; |
647
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
377 | v.collection = VERSIONING_DEFAULT_PATH; |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
378 | |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
379 | int err = 0; |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
380 | |
692
56b66fe2b4f5
fix dav-sync deltav versioning
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
679
diff
changeset
|
381 | xmlChar *attr_type = xmlGetNoNsProp(node, BAD_CAST "type"); |
647
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
382 | xmlChar *attr_always = xmlGetNoNsProp(node, BAD_CAST "always"); |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
383 | |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
384 | if(attr_type) { |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
385 | if(xstreq(attr_type, "simple")) { |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
386 | v.type = VERSIONING_SIMPLE; |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
387 | } else if(xstreq(attr_type, "deltav")) { |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
388 | v.type = VERSIONING_DELTAV; |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
389 | } else { |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
390 | print_error(node->line, |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
391 | "type attribute: unknown value: %s\n", |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
392 | attr_type); |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
393 | err = 1; |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
394 | } |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
395 | xmlFree(attr_type); |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
396 | } |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
397 | if(attr_always) { |
700
165811ea12ab
add documentation for all new config elements
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
692
diff
changeset
|
398 | v.always = util_getboolean((const char*)attr_always); |
647
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
399 | xmlFree(attr_always); |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
400 | } |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
401 | |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
402 | if(err) { |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
403 | return NULL; |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
404 | } |
491
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
405 | |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
406 | xmlNode *c = node->children; |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
407 | while(c) { |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
408 | if(c->type == XML_ELEMENT_NODE) { |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
409 | char *value = util_xml_get_text(c); |
647
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
410 | if(xstreq(c->name, "history")) { |
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
411 | CHECK_VALUE_RET_NULL(c, value); |
491
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
412 | v.collection = value; |
647
8bf1d9688698
change versioning config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
646
diff
changeset
|
413 | } |
491
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
414 | } |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
415 | c = c->next; |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
416 | } |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
417 | |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
418 | v.collection = strdup(v.collection); |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
419 | |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
420 | Versioning *versioning = malloc(sizeof(Versioning)); |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
421 | *versioning = v; |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
422 | return versioning; |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
423 | } |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
424 | |
256
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
425 | static int scfg_load_directory(xmlNode *node) { |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
426 | char *name = NULL; |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
427 | char *path = NULL; |
65
d4077e8175f3
added optional trash for deleted files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
58
diff
changeset
|
428 | char *trash = NULL; |
56
99f7816fcf01
added collection config for sync directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
47
diff
changeset
|
429 | char *collection = NULL; |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
430 | char *repository = NULL; |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
431 | char *database = NULL; |
778
bf53db813cc9
add logfile sync config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
747
diff
changeset
|
432 | char *logfile = NULL; |
361
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
433 | TagConfig *tagconfig = NULL; |
491
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
434 | Versioning *versioning = NULL; |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
435 | CxList *include = cxLinkedListCreateSimple(sizeof(regex_t)); |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
436 | CxList *exclude = cxLinkedListCreateSimple(sizeof(regex_t)); |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
437 | CxList *tagfilter = cxLinkedListCreateSimple(CX_STORE_POINTERS); |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
438 | CxList *splitconfig = NULL; |
244
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
439 | int max_retry = 0; |
490
d94c4fd35c21
adds dav-sync restore command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
440 | int allow_cmd = SYNC_CMD_PULL | SYNC_CMD_PUSH |
d94c4fd35c21
adds dav-sync restore command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
441 | | SYNC_CMD_ARCHIVE | SYNC_CMD_RESTORE; |
145
82475dc12dd4
improved dav-sync data-loss prevention
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
144
diff
changeset
|
442 | bool backuppull = false; |
221
e22c29b7ee2f
using locks in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
203
diff
changeset
|
443 | bool lockpull = false; |
232
df3fa8637a58
disabled locking in dav-sync by default
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
226
diff
changeset
|
444 | bool lockpush = false; |
549
af91d3c96994
add hashing config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
539
diff
changeset
|
445 | bool hashing = false; |
630
046b869a1c49
use hash to check if a file content was really modified
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
623
diff
changeset
|
446 | bool store_hash = false; |
649
0f4c59ac8c74
implement hash based conflict resolution in dav-sync pull
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
648
diff
changeset
|
447 | bool pull_skip_hashing = false; |
623
7870656d302d
add element for configuring symlinks
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
576
diff
changeset
|
448 | //bool detect_copy = false; |
316
9d0505d80044
adds dav-sync lock timeout config element
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
288
diff
changeset
|
449 | time_t lock_timeout = 0; |
522
46f96dcd6eab
adds metadata config element for dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
521
diff
changeset
|
450 | uint32_t metadata = 0; |
623
7870656d302d
add element for configuring symlinks
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
576
diff
changeset
|
451 | uint32_t symlink = 0; |
642
4e23087d3d90
add config element for push strategy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
630
diff
changeset
|
452 | PushStrategy pushstrat = PUSH_STRATEGY_METADATA; |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
453 | |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
454 | unsigned short parentlineno = node->line; |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
455 | node = node->children; |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
456 | while(node) { |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
457 | if(node->type == XML_ELEMENT_NODE) { |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
458 | char *value = util_xml_get_text(node); |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
459 | /* every key needs a value */ |
679
0d352b79363a
fix some versioning related bugs and add tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
664
diff
changeset
|
460 | if(!value && !xstreq(node->name, "versioning")) { |
0d352b79363a
fix some versioning related bugs and add tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
664
diff
changeset
|
461 | // TODO: only report if value is required |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
462 | print_error(node->line, |
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
463 | "missing value for directory element: %s\n", |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
464 | node->name); |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
465 | return 1; |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
466 | } |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
467 | if(xstreq(node->name, "name")) { |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
468 | name = value; |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
469 | } else if(xstreq(node->name, "path")) { |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
470 | path = value; |
65
d4077e8175f3
added optional trash for deleted files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
58
diff
changeset
|
471 | } else if(xstreq(node->name, "trash")) { |
d4077e8175f3
added optional trash for deleted files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
58
diff
changeset
|
472 | trash = value; |
56
99f7816fcf01
added collection config for sync directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
47
diff
changeset
|
473 | } else if(xstreq(node->name, "collection")) { |
99f7816fcf01
added collection config for sync directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
47
diff
changeset
|
474 | collection = value; |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
475 | } else if(xstreq(node->name, "repository")) { |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
476 | repository = value; |
244
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
477 | } else if(xstreq(node->name, "filter")) { |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
478 | if(scfg_load_filter(node, include, exclude, tagfilter)) { |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
479 | return 1; |
244
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
480 | } |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
481 | } else if(xstreq(node->name, "database")) { |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
482 | database = value; |
778
bf53db813cc9
add logfile sync config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
747
diff
changeset
|
483 | } else if(xstreq(node->name, "logfile")) { |
bf53db813cc9
add logfile sync config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
747
diff
changeset
|
484 | logfile = value; |
426
9cec06cfeade
renames <tags> element to <tagconfig>
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
425
diff
changeset
|
485 | } else if(xstreq(node->name, "tagconfig")) { |
361
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
486 | tagconfig = parse_tagconfig(node); |
534
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
487 | } else if(xstreq(node->name, "splitconfig")) { |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
488 | int err = 0; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
489 | splitconfig = parse_splitconfig(node, &err); |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
490 | if(err) { |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
491 | return 1; |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
492 | } |
522
46f96dcd6eab
adds metadata config element for dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
521
diff
changeset
|
493 | } else if(xstreq(node->name, "metadata")) { |
646
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
494 | uint32_t md = 0; |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
495 | |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
496 | const char *delims = " ,\t\r\n"; |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
497 | char *metadatastr = strdup(value); |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
498 | char *m = strtok(metadatastr, delims); |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
499 | while(m) { |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
500 | if(!strcmp(m, "mtime")) { |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
501 | md |= FINFO_MTIME; |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
502 | } else if(!strcmp(m, "mode")) { |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
503 | md |= FINFO_MODE; |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
504 | } else if(!strcmp(m, "owner")) { |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
505 | md |= FINFO_OWNER; |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
506 | } else if(!strcmp(m, "xattr")) { |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
507 | md |= FINFO_XATTR; |
661
1baec7ff8931
add first metadata sync test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
658
diff
changeset
|
508 | } else if(!strcmp(m, "all")) { |
1baec7ff8931
add first metadata sync test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
658
diff
changeset
|
509 | md |= FINFO_MTIME | FINFO_MODE | FINFO_OWNER | FINFO_XATTR; |
646
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
510 | } |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
511 | m = strtok(NULL, delims); |
522
46f96dcd6eab
adds metadata config element for dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
521
diff
changeset
|
512 | } |
646
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
513 | free(metadatastr); |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
514 | |
37a8bfae995e
change metadata config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
644
diff
changeset
|
515 | metadata = md; |
491
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
516 | } else if(xstreq(node->name, "versioning")) { |
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
517 | versioning = parse_versioning_config(node); |
145
82475dc12dd4
improved dav-sync data-loss prevention
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
144
diff
changeset
|
518 | } else if(xstreq(node->name, "max-retry")) { |
82475dc12dd4
improved dav-sync data-loss prevention
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
144
diff
changeset
|
519 | int64_t i; |
244
47791bdf1725
changed max-retry meaning and filter configuration in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
233
diff
changeset
|
520 | if(util_strtoint(value, &i) && i >= 0) { |
145
82475dc12dd4
improved dav-sync data-loss prevention
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
144
diff
changeset
|
521 | max_retry = (int)i; |
82475dc12dd4
improved dav-sync data-loss prevention
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
144
diff
changeset
|
522 | } else { |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
523 | print_warning(node->line, "unsigned integer value " |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
524 | "expected in <max-retry> element\n"); |
145
82475dc12dd4
improved dav-sync data-loss prevention
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
144
diff
changeset
|
525 | } |
347
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
526 | } else if(xstreq(node->name, "allow-cmd")) { |
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
527 | int cmds = 0; |
642
4e23087d3d90
add config element for push strategy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
630
diff
changeset
|
528 | const char *delims = " ,\t\r\n"; |
347
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
529 | char *cmdstr = strdup(value); |
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
530 | char *cmd = strtok(cmdstr, delims); |
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
531 | while(cmd) { |
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
532 | if(!strcmp(cmd, "pull")) { |
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
533 | cmds |= SYNC_CMD_PULL; |
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
534 | } else if(!strcmp(cmd, "push")) { |
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
535 | cmds |= SYNC_CMD_PUSH; |
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
536 | } else if(!strcmp(cmd, "archive")) { |
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
537 | cmds |= SYNC_CMD_ARCHIVE; |
490
d94c4fd35c21
adds dav-sync restore command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
538 | } else if(!strcmp(cmd, "restore")) { |
d94c4fd35c21
adds dav-sync restore command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
539 | cmds |= SYNC_CMD_RESTORE; |
347
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
540 | } |
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
541 | cmd = strtok(NULL, delims); |
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
542 | } |
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
543 | free(cmdstr); |
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
544 | allow_cmd = cmds; |
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
545 | |
145
82475dc12dd4
improved dav-sync data-loss prevention
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
144
diff
changeset
|
546 | } else if(xstreq(node->name, "backup-on-pull")) { |
82475dc12dd4
improved dav-sync data-loss prevention
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
144
diff
changeset
|
547 | backuppull = util_getboolean(value); |
221
e22c29b7ee2f
using locks in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
203
diff
changeset
|
548 | } else if(xstreq(node->name, "lock-pull")) { |
e22c29b7ee2f
using locks in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
203
diff
changeset
|
549 | lockpull = util_getboolean(value); |
e22c29b7ee2f
using locks in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
203
diff
changeset
|
550 | } else if(xstreq(node->name, "lock-push")) { |
e22c29b7ee2f
using locks in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
203
diff
changeset
|
551 | lockpush = util_getboolean(value); |
316
9d0505d80044
adds dav-sync lock timeout config element
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
288
diff
changeset
|
552 | } else if(xstreq(node->name, "lock-timeout")) { |
9d0505d80044
adds dav-sync lock timeout config element
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
288
diff
changeset
|
553 | int64_t t = 0; |
9d0505d80044
adds dav-sync lock timeout config element
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
288
diff
changeset
|
554 | if(util_strtoint(value, &t)) { |
9d0505d80044
adds dav-sync lock timeout config element
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
288
diff
changeset
|
555 | lock_timeout = (time_t)t; |
9d0505d80044
adds dav-sync lock timeout config element
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
288
diff
changeset
|
556 | } else { |
9d0505d80044
adds dav-sync lock timeout config element
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
288
diff
changeset
|
557 | print_warning(node->line, "integer value " |
9d0505d80044
adds dav-sync lock timeout config element
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
288
diff
changeset
|
558 | "expected in <lock-timeout> element\n"); |
9d0505d80044
adds dav-sync lock timeout config element
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
288
diff
changeset
|
559 | } |
549
af91d3c96994
add hashing config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
539
diff
changeset
|
560 | } else if(xstreq(node->name, "hashing")) { |
af91d3c96994
add hashing config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
539
diff
changeset
|
561 | hashing = util_getboolean(value); |
642
4e23087d3d90
add config element for push strategy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
630
diff
changeset
|
562 | store_hash = hashing; |
4e23087d3d90
add config element for push strategy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
630
diff
changeset
|
563 | } else if(xstreq(node->name, "push-strategy")) { |
4e23087d3d90
add config element for push strategy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
630
diff
changeset
|
564 | if(value) { |
4e23087d3d90
add config element for push strategy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
630
diff
changeset
|
565 | if(xstreq(value, "metadata")) { |
4e23087d3d90
add config element for push strategy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
630
diff
changeset
|
566 | pushstrat = PUSH_STRATEGY_METADATA; |
4e23087d3d90
add config element for push strategy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
630
diff
changeset
|
567 | } else if(xstreq(value, "hash")) { |
4e23087d3d90
add config element for push strategy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
630
diff
changeset
|
568 | pushstrat = PUSH_STRATEGY_HASH; |
4e23087d3d90
add config element for push strategy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
630
diff
changeset
|
569 | } |
4e23087d3d90
add config element for push strategy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
630
diff
changeset
|
570 | } |
644
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
571 | } else if(xstreq(node->name, "symlink-intern")) { |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
572 | if(!value) { |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
573 | print_error(node->line, "missing value"); |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
574 | } else if(xstreq(value, "sync")) { |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
575 | symlink |= SYNC_SYMLINK_SYNC; |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
576 | } else if(xstreq(value, "follow")) { |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
577 | // nothing, default |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
578 | } else if(xstreq(value, "ignore")) { |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
579 | symlink |= SYNC_SYMLINK_IGNORE_INTERN; |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
580 | } else { |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
581 | print_error(node->line, |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
582 | "unknown value: %s\n", value); |
623
7870656d302d
add element for configuring symlinks
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
576
diff
changeset
|
583 | } |
644
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
584 | } else if(xstreq(node->name, "symlink-extern")) { |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
585 | if(!value) { |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
586 | print_error(node->line, "missing value"); |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
587 | } else if(xstreq(value, "follow")) { |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
588 | // nothing, default |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
589 | } else if(xstreq(value, "ignore")) { |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
590 | symlink |= SYNC_SYMLINK_IGNORE_EXTERN; |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
591 | } else { |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
592 | print_error(node->line, |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
593 | "unknown value: %s\n", value); |
a38b15061848
refactore symlink config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
642
diff
changeset
|
594 | } |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
595 | } else { |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
596 | print_error(node->line, |
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
597 | "unknown directory config element: %s\n", node->name); |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
598 | return 1; |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
599 | } |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
600 | } |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
601 | node = node->next; |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
602 | } |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
603 | |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
604 | if(!name) { |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
605 | print_error(parentlineno, "missing name element for directory\n"); |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
606 | return 1; |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
607 | } |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
608 | if(!path) { |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
609 | print_error(parentlineno, |
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
610 | "missing path element for directory %s\n", name); |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
611 | return 1; |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
612 | } |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
613 | if(!repository) { |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
614 | print_error(parentlineno, |
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
615 | "missing repository element for directory %s\n", name); |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
616 | return 1; |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
617 | } |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
618 | if(!database) { |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
619 | print_error(parentlineno, |
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
253
diff
changeset
|
620 | "missing database element for directory %s\n", name); |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
621 | return 1; |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
622 | } |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
623 | |
521
c5bbae4b3cca
extends sync db
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
491
diff
changeset
|
624 | SyncDirectory *dir = calloc(1, sizeof(SyncDirectory)); |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
625 | dir->name = strdup(name); |
226
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
626 | dir->path = scfg_create_path(path); |
56
99f7816fcf01
added collection config for sync directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
47
diff
changeset
|
627 | dir->collection = collection ? strdup(collection) : NULL; |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
628 | dir->repository = strdup(repository); |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
629 | dir->database = strdup(database); |
783
36a7f2ea7d12
add error logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
778
diff
changeset
|
630 | dir->logfile = logfile ? strdup(logfile) : NULL; |
361
b6f2462ee055
adds xattr lib and tag support
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
631 | dir->tagconfig = tagconfig; |
491
fdc2fb090cc7
adds versioning support for dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
632 | dir->versioning = versioning; |
145
82475dc12dd4
improved dav-sync data-loss prevention
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
144
diff
changeset
|
633 | dir->max_retry = max_retry; |
347
b6ff6be7aa91
adds config option to disable certain commands for specific syncdirs and fixes authmethod config parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
634 | dir->allow_cmd = allow_cmd; |
145
82475dc12dd4
improved dav-sync data-loss prevention
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
144
diff
changeset
|
635 | dir->backuppull = backuppull; |
221
e22c29b7ee2f
using locks in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
203
diff
changeset
|
636 | dir->lockpull = lockpull; |
e22c29b7ee2f
using locks in dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
203
diff
changeset
|
637 | dir->lockpush = lockpush; |
549
af91d3c96994
add hashing config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
539
diff
changeset
|
638 | dir->hashing = hashing; |
630
046b869a1c49
use hash to check if a file content was really modified
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
623
diff
changeset
|
639 | dir->store_hash = store_hash; |
649
0f4c59ac8c74
implement hash based conflict resolution in dav-sync pull
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
648
diff
changeset
|
640 | dir->pull_skip_hashing = pull_skip_hashing; |
316
9d0505d80044
adds dav-sync lock timeout config element
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
288
diff
changeset
|
641 | dir->lock_timeout = lock_timeout; |
522
46f96dcd6eab
adds metadata config element for dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
521
diff
changeset
|
642 | dir->metadata = metadata; |
536
877f7c4a203b
adds file splitting feature to dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
534
diff
changeset
|
643 | dir->splitconfig = splitconfig; |
623
7870656d302d
add element for configuring symlinks
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
576
diff
changeset
|
644 | dir->symlink = symlink; |
642
4e23087d3d90
add config element for push strategy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
630
diff
changeset
|
645 | dir->push_strategy = pushstrat; |
539
8deb52292c99
fixes more if statements and some warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
536
diff
changeset
|
646 | if((metadata & FINFO_MODE) == FINFO_MODE) { |
522
46f96dcd6eab
adds metadata config element for dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
521
diff
changeset
|
647 | dir->db_settings = DB_STORE_MODE; |
46f96dcd6eab
adds metadata config element for dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
521
diff
changeset
|
648 | } |
539
8deb52292c99
fixes more if statements and some warnings
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
536
diff
changeset
|
649 | if((metadata & FINFO_OWNER) == FINFO_OWNER) { |
522
46f96dcd6eab
adds metadata config element for dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
521
diff
changeset
|
650 | dir->db_settings |= DB_STORE_OWNER; |
46f96dcd6eab
adds metadata config element for dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
521
diff
changeset
|
651 | } |
46f96dcd6eab
adds metadata config element for dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
521
diff
changeset
|
652 | |
648
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
653 | dir->filter.include = include; |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
654 | dir->filter.exclude = exclude; |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
655 | dir->filter.tags = tagfilter; |
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
656 | init_default_filter(&dir->filter); |
66 | 657 | |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
658 | if (trash && cx_strtrim(cx_str(trash)).length > 0) { |
226
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
659 | if (trash[0] == '/' || trash[0] == '$') { |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
660 | dir->trash = scfg_create_path(trash); |
65
d4077e8175f3
added optional trash for deleted files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
58
diff
changeset
|
661 | } else { |
226
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
662 | char *t = util_concat_path(dir->path, trash); |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
663 | dir->trash = util_concat_path(t, "/"); |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
664 | free(t); |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
665 | } |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
666 | |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
667 | if(dir->trash[strlen(dir->trash)-1] != '/') { |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
668 | char *t = dir->trash; |
65
d4077e8175f3
added optional trash for deleted files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
58
diff
changeset
|
669 | dir->trash = util_concat_path(t, "/"); |
d4077e8175f3
added optional trash for deleted files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
58
diff
changeset
|
670 | free(t); |
d4077e8175f3
added optional trash for deleted files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
58
diff
changeset
|
671 | } |
66 | 672 | } else { |
673 | dir->trash = NULL; | |
65
d4077e8175f3
added optional trash for deleted files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
58
diff
changeset
|
674 | } |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
675 | |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
676 | cxMapPut(directories, cx_hash_key_str(name), dir); |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
677 | |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
678 | return 0; |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
679 | } |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
680 | |
256
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
681 | int load_sync_config() { |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
682 | directories = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, 8); |
256
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
683 | |
319
2433b5969d44
disables automatic creation of .dav directory in dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
316
diff
changeset
|
684 | if(check_config_dir()) { |
2433b5969d44
disables automatic creation of .dav directory in dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
316
diff
changeset
|
685 | fprintf(stderr, "Cannot create .dav directory\n"); |
2433b5969d44
disables automatic creation of .dav directory in dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
316
diff
changeset
|
686 | return 1; |
2433b5969d44
disables automatic creation of .dav directory in dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
316
diff
changeset
|
687 | } |
2433b5969d44
disables automatic creation of .dav directory in dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
316
diff
changeset
|
688 | |
256
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
689 | char *file = util_concat_path(ENV_HOME, ".dav/sync.xml"); |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
690 | |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
691 | struct stat s; |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
692 | if(stat(file, &s)) { |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
693 | switch(errno) { |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
694 | case ENOENT: { |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
695 | if(create_default_sync_config(file)) { |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
696 | return 1; |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
697 | } |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
698 | break; |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
699 | } |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
700 | default: { |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
701 | perror("Cannot load sync.xml"); |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
702 | } |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
703 | } |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
704 | free(file); |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
705 | return 0; |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
706 | } |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
707 | |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
708 | xmlDoc *doc = xmlReadFile(file, NULL, 0); |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
709 | if(!doc) { |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
710 | fprintf(stderr, "Cannot load sync.xml\n"); |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
711 | free(file); |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
712 | return -1; |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
713 | } |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
714 | |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
715 | int ret = 0; |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
716 | xmlNode *node = xmlDocGetRootElement(doc)->children; |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
717 | while(node && !ret) { |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
718 | if(node->type == XML_ELEMENT_NODE) { |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
719 | if(xstreq(node->name, "directory")) { |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
720 | ret = scfg_load_directory(node); |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
721 | } else { |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
722 | print_error(node->line, |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
723 | "unknown config element: %s\n", node->name); |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
724 | ret = 1; |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
725 | } |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
726 | } |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
727 | node = node->next; |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
728 | } |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
729 | |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
730 | xmlFreeDoc(doc); |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
731 | free(file); |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
732 | return ret; |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
733 | } |
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
254
diff
changeset
|
734 | |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
735 | SyncDirectory* scfg_get_dir(const char *name) { |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
736 | return cxMapGet(directories, cx_hash_key_str(name)); |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
737 | } |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
738 | |
233
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
739 | int scfg_check_dir(SyncDirectory *dir) { |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
740 | struct stat s; |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
741 | if(stat(dir->path, &s)) { |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
742 | int err = errno; |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
743 | if(err == ENOENT) { |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
744 | fprintf(stderr, "directory %s does not exist.\n", dir->path); |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
745 | } else { |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
746 | fprintf(stderr, "Cannot stat directory %s.\n", dir->path); |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
747 | perror(NULL); |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
748 | } |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
749 | fprintf(stderr, "Abort.\n"); |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
750 | return -1; |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
751 | } |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
752 | |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
753 | if(dir->trash) { |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
754 | // create trash directory |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
755 | mode_t mode = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH; |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
756 | if (util_mkdir(dir->trash, mode)) { |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
757 | if (errno != EEXIST) { |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
758 | fprintf(stderr, "Cannot create trash directory: %s\nAbort.\n", dir->trash); |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
759 | return -1; |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
760 | } |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
761 | } |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
762 | } |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
763 | |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
764 | return 0; |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
765 | } |
d8042cede66c
improved dav-sync error handling on startup
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
232
diff
changeset
|
766 | |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
767 | char* scfg_create_path(const char *cfg) { |
226
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
768 | if(!cfg) { |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
769 | return NULL; |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
770 | } |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
771 | if(cfg[0] != '$') { |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
772 | return strdup(cfg); |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
773 | } |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
774 | |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
775 | cxstring s = cx_str(cfg); |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
776 | cxstring path = cx_strchr(cx_str(cfg), '/'); |
226
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
777 | char *localpath = NULL; |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
778 | if(path.length > 0) { |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
779 | // path = $var/path/ |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
780 | |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
781 | cxstring var = cx_strsubsl(s, 1, path.ptr - s.ptr - 1); |
226
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
782 | if(var.length > 0) { |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
783 | char *env = cx_strdup(var).ptr; |
226
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
784 | char *envval = getenv(env); |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
785 | free(env); |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
786 | if(envval) { |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
787 | localpath = util_concat_path(envval, path.ptr); |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
788 | } else { |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
789 | fprintf( |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
790 | stderr, |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
791 | "Environment variable %.*s not set.\nAbort.\n", |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
792 | (int)var.length, |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
793 | var.ptr); |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
794 | exit(-1); |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
795 | } |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
796 | } else { |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
797 | localpath = cx_strdup(path).ptr; |
226
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
798 | } |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
799 | } else { |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
800 | // path = $var |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
801 | char *envval = getenv(cfg + 1); |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
802 | if(envval) { |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
803 | localpath = strdup(envval); |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
804 | } else { |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
805 | fprintf( |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
806 | stderr, |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
807 | "Environment variable %s not set.\nAbort.\n", |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
808 | cfg); |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
809 | exit(-1); |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
810 | } |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
811 | } |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
812 | return localpath; |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
813 | } |
acc997e0d0f9
added support for paths with environment variables in sync.xml
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
225
diff
changeset
|
814 | |
200
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
815 | |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
816 | int add_directory(SyncDirectory *dir) { |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
817 | char *file = util_concat_path(ENV_HOME, ".dav/sync.xml"); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
818 | xmlDoc *doc = xmlReadFile(file, NULL, 0); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
819 | if(!doc) { |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
820 | free(file); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
821 | fprintf(stderr, "Cannot load config.xml\n"); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
822 | return 1; |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
823 | } |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
824 | |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
825 | xmlNode *root = xmlDocGetRootElement(doc); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
826 | |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
827 | xmlNode *dirNode = xmlNewNode(NULL, BAD_CAST "directory"); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
828 | xmlNodeAddContent(dirNode, BAD_CAST "\n\t\t"); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
829 | |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
830 | xmlNewTextChild(dirNode, NULL, BAD_CAST "name", BAD_CAST dir->name); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
831 | xmlNodeAddContent(dirNode, BAD_CAST "\n\t\t"); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
832 | |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
833 | xmlNewTextChild(dirNode, NULL, BAD_CAST "path", BAD_CAST dir->path); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
834 | xmlNodeAddContent(dirNode, BAD_CAST "\n\t\t"); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
835 | |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
836 | xmlNewTextChild(dirNode, NULL, BAD_CAST "repository", BAD_CAST dir->repository); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
837 | xmlNodeAddContent(dirNode, BAD_CAST "\n\t\t"); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
838 | |
203
9a93ebd71984
fixed add-directory command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
202
diff
changeset
|
839 | xmlNewTextChild(dirNode, NULL, BAD_CAST "collection", BAD_CAST dir->collection); |
9a93ebd71984
fixed add-directory command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
202
diff
changeset
|
840 | xmlNodeAddContent(dirNode, BAD_CAST "\n\t\t"); |
9a93ebd71984
fixed add-directory command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
202
diff
changeset
|
841 | |
200
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
842 | if(dir->trash) { |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
843 | xmlNewTextChild(dirNode, NULL, BAD_CAST "trash", BAD_CAST dir->trash); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
844 | xmlNodeAddContent(dirNode, BAD_CAST "\n\t\t"); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
845 | } |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
846 | xmlNewTextChild(dirNode, NULL, BAD_CAST "database", BAD_CAST dir->database); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
847 | xmlNodeAddContent(dirNode, BAD_CAST "\n\t"); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
848 | |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
849 | xmlNodeAddContent(root, BAD_CAST "\n\t"); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
850 | xmlAddChild(root, dirNode); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
851 | xmlNodeAddContent(root, BAD_CAST "\n"); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
852 | |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
853 | int ret = 0; |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
854 | if(xmlSaveFormatFileEnc(file, doc, "UTF-8", 1) == -1) { |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
855 | ret = 1; |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
856 | } |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
857 | xmlFreeDoc(doc); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
858 | free(file); |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
859 | |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
860 | return ret; |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
861 | } |
198
44054c452de1
added list-repositories and list-directories commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
185
diff
changeset
|
862 | |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
863 | char* generate_db_name(const char *basename) { |
200
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
864 | char *dbname = NULL; |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
865 | int count = -1; |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
866 | while(!dbname) { |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
867 | cxmutstr name = count < 0 ? |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
868 | cx_asprintf("%s-db.xml", basename) : |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
869 | cx_asprintf("%s%d-db.xml", basename, count); |
200
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
870 | count++; |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
871 | |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
872 | CxIterator i = cxMapIteratorValues(directories); |
200
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
873 | bool unique = true; |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
874 | cx_foreach(SyncDirectory *, dir, i) { |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
875 | if(!cx_strcmp(cx_strcast(name), cx_str(dir->database))) { |
200
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
876 | unique = false; |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
877 | break; |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
878 | } |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
879 | } |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
880 | if(unique) { |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
881 | dbname = name.ptr; |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
882 | break; |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
883 | } |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
884 | } |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
885 | return dbname; |
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
198
diff
changeset
|
886 | } |
224
4b55f05f4e00
added more cleanup code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
222
diff
changeset
|
887 | |
648
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
888 | void free_filter(Filter filter) { |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
889 | cxListDestroy(filter.include); |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
890 | cxListDestroy(filter.exclude); |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
891 | cxListDestroy(filter.tags); |
648
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
892 | } |
224
4b55f05f4e00
added more cleanup code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
222
diff
changeset
|
893 | |
4b55f05f4e00
added more cleanup code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
222
diff
changeset
|
894 | void free_sync_config() { |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
895 | if(directories) { |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
896 | CxIterator i = cxMapIteratorValues(directories); |
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
897 | cx_foreach(SyncDirectory *, dir, i) { |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
898 | free(dir->name); |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
899 | free(dir->path); |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
900 | free(dir->repository); |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
901 | free(dir->database); |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
902 | |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
903 | if(dir->collection) { |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
904 | free(dir->collection); |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
905 | } |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
906 | if(dir->trash) { |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
907 | free(dir->trash); |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
908 | } |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
909 | |
648
fefe4b6f1048
change split config
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
647
diff
changeset
|
910 | free_filter(dir->filter); |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
911 | |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
912 | free(dir); |
224
4b55f05f4e00
added more cleanup code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
222
diff
changeset
|
913 | } |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
246
diff
changeset
|
914 | |
747
efbd59642577
ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
700
diff
changeset
|
915 | cxMapDestroy(directories); |
224
4b55f05f4e00
added more cleanup code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
222
diff
changeset
|
916 | } |
4b55f05f4e00
added more cleanup code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
222
diff
changeset
|
917 | } |