diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2015-07-22 20:19:20 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2015-07-22 20:19:20 +0200 |
commit | ca48064339d58a9b5a87e005629d671fe663256b (patch) | |
tree | 61c7e3f40426f581660be67d96064c31648a5504 | |
parent | 68990f25f322e29b041bb47c20348021f8e5787f (diff) | |
download | tracker-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.c | 9 |
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; |