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 if(!tagfilter || tagfilter->mode == DAV_SYNC_TAGFILTER_OFF) { |
|
263 return 1; |
|
264 } |
262 int scope = res->iscollection ? |
265 int scope = res->iscollection ? |
263 DAV_SYNC_TAGFILTER_SCOPE_COLLECTION |
266 DAV_SYNC_TAGFILTER_SCOPE_COLLECTION |
264 : DAV_SYNC_TAGFILTER_SCOPE_RESOURCE; |
267 : DAV_SYNC_TAGFILTER_SCOPE_RESOURCE; |
265 if(tagfilter->scope & scope != scope) { |
268 if(tagfilter->scope & scope != scope) { |
266 return 1; |
269 return 1; |
267 } |
270 } |
268 if(!tagfilter || tagfilter->mode == DAV_SYNC_TAGFILTER_OFF) { |
|
269 return 1; |
|
270 } |
|
271 |
271 |
272 DavXmlNode *tagsprop = dav_get_property_ns(res, DAV_NS, "tags"); |
272 DavXmlNode *tagsprop = dav_get_property_ns(res, DAV_NS, "tags"); |
273 UcxList *res_tags = parse_dav_xml_taglist(tagsprop); |
273 UcxList *res_tags = parse_dav_xml_taglist(tagsprop); |
274 |
274 |
275 int ret = matches_tagfilter(res_tags, tagfilter); |
275 int ret = matches_tagfilter(res_tags, tagfilter); |
283 static int localres_matches_tags( |
283 static int localres_matches_tags( |
284 SyncDirectory *dir, |
284 SyncDirectory *dir, |
285 LocalResource *res, |
285 LocalResource *res, |
286 SyncTagFilter *tagfilter) |
286 SyncTagFilter *tagfilter) |
287 { |
287 { |
|
288 if(!tagfilter || tagfilter->mode == DAV_SYNC_TAGFILTER_OFF) { |
|
289 return 1; |
|
290 } |
288 int scope = res->isdirectory ? |
291 int scope = res->isdirectory ? |
289 DAV_SYNC_TAGFILTER_SCOPE_COLLECTION |
292 DAV_SYNC_TAGFILTER_SCOPE_COLLECTION |
290 : DAV_SYNC_TAGFILTER_SCOPE_RESOURCE; |
293 : DAV_SYNC_TAGFILTER_SCOPE_RESOURCE; |
291 if(tagfilter->scope & scope != scope) { |
294 if(tagfilter->scope & scope != scope) { |
292 return 1; |
|
293 } |
|
294 if(!tagfilter || tagfilter->mode == DAV_SYNC_TAGFILTER_OFF) { |
|
295 return 1; |
295 return 1; |
296 } |
296 } |
297 |
297 |
298 DavBool changed = 0; |
298 DavBool changed = 0; |
299 UcxList *res_tags = sync_get_file_tags(dir, res, &changed); |
299 UcxList *res_tags = sync_get_file_tags(dir, res, &changed); |