summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2015-07-22 20:19:20 +0200
committerCarlos Garnacho <carlosg@gnome.org>2015-07-22 20:19:20 +0200
commitca48064339d58a9b5a87e005629d671fe663256b (patch)
tree61c7e3f40426f581660be67d96064c31648a5504
parent68990f25f322e29b041bb47c20348021f8e5787f (diff)
downloadtracker-ca48064339d58a9b5a87e005629d671fe663256b.tar.gz
libtracker-miner: Fallback to basename checks on hidden files
When we receive DELETED events on files, the TrackerFileNotifier/ TrackerIndexingTree attempt to find out if its hidden and should thus be ignored. However the g_file_query_info() evidently fails at that time, with the file already deleted, so we think the file is not hidden and the delete operation gets propagated to the TrackerMineFS. Fix this by resorting to basename checks as a last resort, so we do the right thing even after the file is gone.
-rw-r--r--src/libtracker-common/tracker-file-utils.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libtracker-common/tracker-file-utils.c b/src/libtracker-common/tracker-file-utils.c
index 6fca87e43..123d34793 100644
--- a/src/libtracker-common/tracker-file-utils.c
+++ b/src/libtracker-common/tracker-file-utils.c
@@ -743,6 +743,15 @@ tracker_file_is_hidden (GFile *file)
/* Check if GIO says the file is hidden */
is_hidden = g_file_info_get_is_hidden (file_info);
g_object_unref (file_info);
+ } else {
+ gchar *basename;
+
+ /* Resort last to basename checks, this might happen on
+ * already deleted files.
+ */
+ basename = g_file_get_basename (file);
+ is_hidden = basename[0] == '.';
+ g_free (basename);
}
return is_hidden;