257 } |
257 } |
258 return 1; |
258 return 1; |
259 } |
259 } |
260 |
260 |
261 static int res_matches_tags(DavResource *res, SyncTagFilter *tagfilter) { |
261 static int res_matches_tags(DavResource *res, SyncTagFilter *tagfilter) { |
|
262 int scope = res->iscollection ? |
|
263 DAV_SYNC_TAGFILTER_SCOPE_COLLECTION |
|
264 : DAV_SYNC_TAGFILTER_SCOPE_RESOURCE; |
|
265 if(tagfilter->scope & scope != scope) { |
|
266 return 1; |
|
267 } |
262 if(!tagfilter || tagfilter->mode == DAV_SYNC_TAGFILTER_OFF) { |
268 if(!tagfilter || tagfilter->mode == DAV_SYNC_TAGFILTER_OFF) { |
263 return 1; |
269 return 1; |
264 } |
270 } |
265 |
271 |
266 DavXmlNode *tagsprop = dav_get_property_ns(res, DAV_NS, "tags"); |
272 DavXmlNode *tagsprop = dav_get_property_ns(res, DAV_NS, "tags"); |
277 static int localres_matches_tags( |
283 static int localres_matches_tags( |
278 SyncDirectory *dir, |
284 SyncDirectory *dir, |
279 LocalResource *res, |
285 LocalResource *res, |
280 SyncTagFilter *tagfilter) |
286 SyncTagFilter *tagfilter) |
281 { |
287 { |
|
288 int scope = res->isdirectory ? |
|
289 DAV_SYNC_TAGFILTER_SCOPE_COLLECTION |
|
290 : DAV_SYNC_TAGFILTER_SCOPE_RESOURCE; |
|
291 if(tagfilter->scope & scope != scope) { |
|
292 return 1; |
|
293 } |
282 if(!tagfilter || tagfilter->mode == DAV_SYNC_TAGFILTER_OFF) { |
294 if(!tagfilter || tagfilter->mode == DAV_SYNC_TAGFILTER_OFF) { |
283 return 1; |
295 return 1; |
284 } |
296 } |
285 |
297 |
286 DavBool changed = 0; |
298 DavBool changed = 0; |
344 if(a->argc != 1) { |
356 if(a->argc != 1) { |
345 fprintf(stderr, "Too %s arguments\n", a->argc < 1 ? "few" : "many"); |
357 fprintf(stderr, "Too %s arguments\n", a->argc < 1 ? "few" : "many"); |
346 return -1; |
358 return -1; |
347 } |
359 } |
348 // if there are syntax errors in the command line, fail asap. |
360 // if there are syntax errors in the command line, fail asap. |
349 SyncTagFilter* tagfilter = parse_tagfilter_string(cmd_getoption(a, "tags")); |
361 SyncTagFilter* tagfilter = parse_tagfilter_string( |
|
362 cmd_getoption(a, "tags"), DAV_SYNC_TAGFILTER_SCOPE_RESOURCE); |
350 if (!tagfilter) { |
363 if (!tagfilter) { |
351 fprintf(stderr, "Malformed tag filter\n"); |
364 fprintf(stderr, "Malformed tag filter\n"); |
352 return -1; |
365 return -1; |
353 } |
366 } |
354 // TODO: tons of memory leaks... |
367 // TODO: tons of memory leaks... |
915 fprintf(stderr, "Too %s arguments\n", a->argc < 1 ? "few" : "many"); |
928 fprintf(stderr, "Too %s arguments\n", a->argc < 1 ? "few" : "many"); |
916 return -1; |
929 return -1; |
917 } |
930 } |
918 |
931 |
919 // if there are syntax errors in the command line, fail asap. |
932 // if there are syntax errors in the command line, fail asap. |
920 SyncTagFilter* tagfilter = parse_tagfilter_string(cmd_getoption(a, "tags")); |
933 SyncTagFilter* tagfilter = parse_tagfilter_string( |
|
934 cmd_getoption(a, "tags"), DAV_SYNC_TAGFILTER_SCOPE_RESOURCE); |
921 if (!tagfilter) { |
935 if (!tagfilter) { |
922 fprintf(stderr, "Malformed tag filter\n"); |
936 fprintf(stderr, "Malformed tag filter\n"); |
923 return -1; |
937 return -1; |
924 } |
938 } |
925 |
939 |