tracker r2643 - in trunk: . src/libtracker-common src/tracker-indexer



Author: carlosg
Date: Wed Dec  3 14:45:22 2008
New Revision: 2643
URL: http://svn.gnome.org/viewvc/tracker?rev=2643&view=rev

Log:
2008-12-03  Carlos Garnacho  <carlos imendio com>

        * src/libtracker-common/tracker-type-utils.[ch]
        (tracker_string_in_gslist): New function to know whether a string is
        contained in a GSList of strings.
        * src/tracker-indexer/tracker-indexer.c
        (tracker_indexer_load_modules): Refactor out modules loading to this
        function, also do not load ignored modules by tracker.cfg.
        (tracker_indexer_finalize) (tracker_indexer_init): Misc changes.

Modified:
   trunk/ChangeLog
   trunk/src/libtracker-common/tracker-type-utils.c
   trunk/src/libtracker-common/tracker-type-utils.h
   trunk/src/tracker-indexer/tracker-indexer.c

Modified: trunk/src/libtracker-common/tracker-type-utils.c
==============================================================================
--- trunk/src/libtracker-common/tracker-type-utils.c	(original)
+++ trunk/src/libtracker-common/tracker-type-utils.c	Wed Dec  3 14:45:22 2008
@@ -644,6 +644,23 @@
 	return -1;
 }
 
+gboolean
+tracker_string_in_gslist (const gchar *str,
+			  GSList      *list)
+{
+	GSList *l;
+
+	g_return_val_if_fail (str != NULL, FALSE);
+
+	for (l = list; l; l = l->next) {
+		if (g_strcmp0 (l->data, str) == 0) {
+			return TRUE;
+		}
+	}
+
+	return FALSE;
+}
+
 GSList *
 tracker_string_list_to_gslist (gchar **strv,
 			       gsize   size)

Modified: trunk/src/libtracker-common/tracker-type-utils.h
==============================================================================
--- trunk/src/libtracker-common/tracker-type-utils.h	(original)
+++ trunk/src/libtracker-common/tracker-type-utils.h	Wed Dec  3 14:45:22 2008
@@ -45,6 +45,8 @@
 						guint	     *ret);
 gint	 tracker_string_in_string_list	       (const gchar  *str,
 						gchar	    **strv);
+gboolean tracker_string_in_gslist              (const gchar  *str,
+						GSList       *list);
 GSList * tracker_string_list_to_gslist	       (gchar	    **strv,
 						gsize	      length);
 gchar *  tracker_string_list_to_string	       (gchar	    **strv,

Modified: trunk/src/tracker-indexer/tracker-indexer.c
==============================================================================
--- trunk/src/tracker-indexer/tracker-indexer.c	(original)
+++ trunk/src/tracker-indexer/tracker-indexer.c	Wed Dec  3 14:45:22 2008
@@ -515,6 +515,8 @@
 	g_free (priv->db_dir);
 
 	g_hash_table_unref (priv->indexer_modules);
+
+	g_list_foreach (priv->module_names, (GFunc) g_free, NULL);
 	g_list_free (priv->module_names);
 
 	g_queue_foreach (priv->modules_queue, (GFunc) g_free, NULL);
@@ -819,6 +821,45 @@
 }
 
 static void
+tracker_indexer_load_modules (TrackerIndexer *indexer)
+{
+	TrackerIndexerPrivate *priv;
+	GSList *disabled_modules;
+	GList *modules, *l;
+
+	priv = indexer->private;
+	priv->indexer_modules = g_hash_table_new (g_str_hash, g_str_equal);
+
+	disabled_modules = tracker_config_get_disabled_modules (priv->config);
+	modules = tracker_module_config_get_modules ();
+
+	for (l = modules; l; l = l->next) {
+		TrackerIndexerModule *module;
+
+		if (!tracker_module_config_get_enabled (l->data)) {
+			continue;
+		}
+
+		if (tracker_string_in_gslist (l->data, disabled_modules)) {
+			continue;
+		}
+
+		module = tracker_indexer_module_get (l->data);
+
+		if (module) {
+			g_hash_table_insert (priv->indexer_modules,
+					     l->data, module);
+
+			priv->module_names = g_list_prepend (priv->module_names,
+							     g_strdup (l->data));
+			g_quark_from_string (l->data);
+		}
+	}
+
+	g_list_free (modules);
+}
+
+static void
 tracker_indexer_init (TrackerIndexer *indexer)
 {
 	TrackerIndexerPrivate *priv;
@@ -867,27 +908,7 @@
 					 "tracker",
 					 NULL);
 
-	priv->module_names = tracker_module_config_get_modules ();
-	for (l = priv->module_names; l; l = l->next) {
-		g_quark_from_string (l->data);
-	}
-
-	priv->indexer_modules = g_hash_table_new (g_str_hash, g_str_equal);
-
-	for (l = priv->module_names; l; l = l->next) {
-		TrackerIndexerModule *module;
-
-		if (!tracker_module_config_get_enabled (l->data)) {
-			continue;
-		}
-
-		module = tracker_indexer_module_get (l->data);
-
-		if (module) {
-			g_hash_table_insert (priv->indexer_modules,
-					     l->data, module);
-		}
-	}
+	tracker_indexer_load_modules (indexer);
 
 	/* Set up indexer */
 	index = tracker_db_index_manager_get_index (TRACKER_DB_INDEX_FILE);



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