summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2017-10-18 22:45:10 +0200
committerCarlos Garnacho <carlosg@gnome.org>2017-11-14 22:45:26 +0100
commit472215a31e2b7bfcc4320c55657330ad81178f6e (patch)
tree0cf55fbf4f08422beb6d10ef5be86891f61c04dd
parent7db0a2de5e787a7366c7262d33bb0fcd359f9beb (diff)
downloadtracker-472215a31e2b7bfcc4320c55657330ad81178f6e.tar.gz
libtracker-miner: Fix content filter with default policy=deny
We deemed the directory as bad whenever any file didn't match the filter, but files that don't match the filter should not trigger it in one way or another.
-rw-r--r--src/libtracker-miner/tracker-indexing-tree.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/libtracker-miner/tracker-indexing-tree.c b/src/libtracker-miner/tracker-indexing-tree.c
index 42f695526..59f4399de 100644
--- a/src/libtracker-miner/tracker-indexing-tree.c
+++ b/src/libtracker-miner/tracker-indexing-tree.c
@@ -917,23 +917,31 @@ tracker_indexing_tree_parent_is_indexable (TrackerIndexingTree *tree,
GFile *parent,
GList *children)
{
+ TrackerIndexingTreePrivate *priv;
+ gboolean has_match = FALSE;
+
+ g_return_val_if_fail (TRACKER_IS_INDEXING_TREE (tree), FALSE);
+ g_return_val_if_fail (G_IS_FILE (parent), FALSE);
+
+ priv = tree->priv;
+
if (!tracker_indexing_tree_file_is_indexable (tree,
parent,
G_FILE_TYPE_DIRECTORY)) {
return FALSE;
}
- while (children) {
- if (indexing_tree_file_is_filtered (tree,
- TRACKER_FILTER_PARENT_DIRECTORY,
- children->data)) {
- return FALSE;
- }
-
+ while (children && !has_match) {
+ has_match = tracker_indexing_tree_file_matches_filter (tree,
+ TRACKER_FILTER_PARENT_DIRECTORY,
+ children->data);
children = children->next;
}
- return TRUE;
+ if (priv->policies[TRACKER_FILTER_PARENT_DIRECTORY] == TRACKER_FILTER_POLICY_ACCEPT)
+ return !has_match;
+ else
+ return has_match;
}
/**