[tracker] TrackerMinerFiles: Hook check-directory-contents to configuration.



commit 7d11c49c80e9208271acb635f806ac04a9a6bd23
Author: Carlos Garnacho <carlos lanedo com>
Date:   Fri Sep 11 13:29:10 2009 +0200

    TrackerMinerFiles: Hook check-directory-contents to configuration.

 src/tracker-miner-fs/tracker-miner-files.c |   42 ++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)
---
diff --git a/src/tracker-miner-fs/tracker-miner-files.c b/src/tracker-miner-fs/tracker-miner-files.c
index 1eb48ac..fe7f68a 100644
--- a/src/tracker-miner-fs/tracker-miner-files.c
+++ b/src/tracker-miner-fs/tracker-miner-files.c
@@ -129,6 +129,9 @@ static gboolean miner_files_check_file        (TrackerMinerFS       *fs,
 					       GFile                *file);
 static gboolean miner_files_check_directory   (TrackerMinerFS       *fs,
 					       GFile                *file);
+static gboolean miner_files_check_directory_contents (TrackerMinerFS       *fs,
+						      GFile                *parent,
+						      GList                *children);
 static gboolean miner_files_process_file      (TrackerMinerFS       *fs,
 					       GFile                *file,
 					       TrackerSparqlBuilder *sparql,
@@ -153,6 +156,7 @@ tracker_miner_files_class_init (TrackerMinerFilesClass *klass)
 
         miner_fs_class->check_file = miner_files_check_file;
 	miner_fs_class->check_directory = miner_files_check_directory;
+	miner_fs_class->check_directory_contents = miner_files_check_directory_contents;
 	miner_fs_class->monitor_directory = miner_files_monitor_directory;
         miner_fs_class->process_file = miner_files_process_file;
 
@@ -1010,6 +1014,44 @@ done:
 }
 
 static gboolean
+miner_files_check_directory_contents (TrackerMinerFS *fs,
+				      GFile          *parent,
+				      GList          *children)
+{
+	TrackerMinerFiles *mf;
+	GSList *ignored_content, *l;
+
+	mf = TRACKER_MINER_FILES (fs);
+	ignored_content = tracker_config_get_ignored_directories_with_content (mf->private->config);
+
+	while (children) {
+		gchar *basename;
+
+		basename = g_file_get_basename (children->data);
+
+		for (l = ignored_content; l; l = l->next) {
+			if (g_strcmp0 (basename, l->data) == 0) {
+				gchar *parent_uri;
+
+				parent_uri = g_file_get_uri (parent);
+				g_debug ("Directory '%s' ignored since it contains a file named '%s'",
+					 parent_uri, basename);
+
+				g_free (parent_uri);
+				g_free (basename);
+
+				return FALSE;
+			}
+		}
+
+		children = children->next;
+		g_free (basename);
+	}
+
+	return TRUE;
+}
+
+static gboolean
 miner_files_monitor_directory (TrackerMinerFS *fs,
 			       GFile          *file)
 {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]