dav/sync.c

changeset 414
ea50585ec9d9
parent 412
dc74f736aea1
child 415
6e1861e8262c
--- a/dav/sync.c	Sun Jun 10 13:24:30 2018 +0200
+++ b/dav/sync.c	Mon Jun 11 19:31:03 2018 +0200
@@ -259,6 +259,12 @@
 }
 
 static int res_matches_tags(DavResource *res, SyncTagFilter *tagfilter) {
+    int scope = res->iscollection ?
+            DAV_SYNC_TAGFILTER_SCOPE_COLLECTION
+          : DAV_SYNC_TAGFILTER_SCOPE_RESOURCE;
+    if(tagfilter->scope & scope != scope) {
+        return 1;
+    }
     if(!tagfilter || tagfilter->mode == DAV_SYNC_TAGFILTER_OFF) {
         return 1;
     }
@@ -279,6 +285,12 @@
         LocalResource *res,
         SyncTagFilter *tagfilter)
 {
+    int scope = res->isdirectory ?
+            DAV_SYNC_TAGFILTER_SCOPE_COLLECTION
+          : DAV_SYNC_TAGFILTER_SCOPE_RESOURCE;
+    if(tagfilter->scope & scope != scope) {
+        return 1;
+    }
     if(!tagfilter || tagfilter->mode == DAV_SYNC_TAGFILTER_OFF) {
         return 1;
     }
@@ -346,7 +358,8 @@
         return -1;
     }
     // if there are syntax errors in the command line, fail asap.
-    SyncTagFilter* tagfilter = parse_tagfilter_string(cmd_getoption(a, "tags"));
+    SyncTagFilter* tagfilter = parse_tagfilter_string(
+            cmd_getoption(a, "tags"), DAV_SYNC_TAGFILTER_SCOPE_RESOURCE);
     if (!tagfilter) {
         fprintf(stderr, "Malformed tag filter\n");
         return -1;
@@ -917,7 +930,8 @@
     }
     
     // if there are syntax errors in the command line, fail asap.
-    SyncTagFilter* tagfilter = parse_tagfilter_string(cmd_getoption(a, "tags"));
+    SyncTagFilter* tagfilter = parse_tagfilter_string(
+            cmd_getoption(a, "tags"), DAV_SYNC_TAGFILTER_SCOPE_RESOURCE);
     if (!tagfilter) {
         fprintf(stderr, "Malformed tag filter\n");
         return -1;

mercurial