[tracker] libtracker-common: Removed tracker-config.[ch]



commit 418559c46245ea27a69f7d81850e32860fda53ce
Author: Martyn Russell <martyn imendio com>
Date:   Thu Jul 16 14:02:47 2009 +0100

    libtracker-common: Removed tracker-config.[ch]
    
    This also changes the way tracker-language.[ch] works.

 .../libtracker-common/libtracker-common-docs.sgml  |    2 -
 .../libtracker-common-sections.txt                 |   73 -
 .../libtracker-common/libtracker-common.types      |    9 -
 src/Makefile.am                                    |    6 +-
 src/libtracker-common/Makefile.am                  |    2 -
 src/libtracker-common/tracker-common.h             |    1 -
 src/libtracker-common/tracker-global-config.c      | 2377 --------------------
 src/libtracker-common/tracker-global-config.h      |  148 --
 src/libtracker-common/tracker-language.c           |  145 +-
 src/libtracker-common/tracker-language.h           |   35 +-
 src/libtracker-common/tracker-thumbnailer.c        |   42 +-
 src/libtracker-common/tracker-thumbnailer.h        |    4 +-
 src/libtracker-data/tracker-data-manager.c         |   87 +-
 src/libtracker-data/tracker-data-manager.h         |    7 +-
 src/libtracker-data/tracker-data-query.h           |    1 -
 src/tracker-extract/Makefile.am                    |    3 +-
 src/tracker-extract/tracker-config.c               |  536 +++++
 src/tracker-extract/tracker-config.h               |   59 +
 src/tracker-extract/tracker-main.c                 |    4 +-
 src/tracker-fts/Makefile.am                        |    5 +-
 src/tracker-fts/tracker-fts.c                      |    8 +-
 src/tracker-miner-fs/tracker-config.h              |   13 +-
 src/tracker-miner-fs/tracker-crawler.c             |    1 +
 src/tracker-miner-fs/tracker-main.c                |    5 +-
 src/tracker-store/tracker-config.c                 |  218 ++
 src/tracker-store/tracker-config.h                 |   39 +-
 src/tracker-store/tracker-main.c                   |   12 +-
 src/tracker-store/tracker-push.c                   |    9 +-
 src/tracker-store/tracker-push.h                   |    4 +-
 tests/libtracker-common/tracker-thumbnailer-test.c |   27 +-
 tests/libtracker-data/tracker-ontology-test.c      |   11 +-
 tests/libtracker-data/tracker-sparql-test.c        |   14 +-
 tests/tracker-miner-fs/Makefile.am                 |    1 +
 33 files changed, 984 insertions(+), 2924 deletions(-)
---
diff --git a/docs/reference/libtracker-common/libtracker-common-docs.sgml b/docs/reference/libtracker-common/libtracker-common-docs.sgml
index a070b2d..4fe249a 100644
--- a/docs/reference/libtracker-common/libtracker-common-docs.sgml
+++ b/docs/reference/libtracker-common/libtracker-common-docs.sgml
@@ -15,7 +15,6 @@
 <!ENTITY tracker-file-utils SYSTEM "xml/tracker-file-utils.xml">
 <!ENTITY tracker-property SYSTEM "xml/tracker-property.xml">
 <!ENTITY tracker-dbus SYSTEM "xml/tracker-dbus.xml">
-<!ENTITY tracker-config SYSTEM "xml/tracker-config.xml">
 <!ENTITY version SYSTEM "version.xml">
 ]>
 <book id="index">
@@ -54,7 +53,6 @@
 
     <chapter>
       <title>Configuration</title>
-      &tracker-config;
       &tracker-power;
       &tracker-storage;
       &tracker-language;
diff --git a/docs/reference/libtracker-common/libtracker-common-sections.txt b/docs/reference/libtracker-common/libtracker-common-sections.txt
index 14ab82a..aeb788e 100644
--- a/docs/reference/libtracker-common/libtracker-common-sections.txt
+++ b/docs/reference/libtracker-common/libtracker-common-sections.txt
@@ -1,76 +1,3 @@
-<INCLUDE>libtracker-common/tracker-config.h</INCLUDE>
-<SECTION>
-<FILE>tracker-config</FILE>
-<TITLE>Config</TITLE>
-TrackerConfig
-tracker_config_new
-tracker_config_add_crawl_directory_roots
-tracker_config_add_disabled_modules
-tracker_config_add_no_watch_directory_roots
-tracker_config_add_watch_directory_roots
-tracker_config_get_crawl_directory_roots
-tracker_config_get_disable_indexing_on_battery
-tracker_config_get_disable_indexing_on_battery_init
-tracker_config_get_disabled_modules
-tracker_config_get_enable_content_indexing
-tracker_config_get_enable_indexing
-tracker_config_get_enable_stemmer
-tracker_config_get_enable_thumbnails
-tracker_config_get_enable_watches
-tracker_config_get_fast_merges
-tracker_config_get_index_mounted_directories
-tracker_config_get_index_removable_devices
-tracker_config_get_initial_sleep
-tracker_config_get_language
-tracker_config_get_low_disk_space_limit
-tracker_config_get_low_memory_mode
-tracker_config_get_max_bucket_count
-tracker_config_get_max_text_to_index
-tracker_config_get_max_word_length
-tracker_config_get_max_words_to_index
-tracker_config_get_min_bucket_count
-tracker_config_get_min_word_length
-tracker_config_get_nfs_locking
-tracker_config_get_no_index_file_types
-tracker_config_get_no_watch_directory_roots
-tracker_config_get_throttle
-tracker_config_get_verbosity
-tracker_config_get_watch_directory_roots
-tracker_config_remove_disabled_modules
-tracker_config_set_disable_indexing_on_battery
-tracker_config_set_disable_indexing_on_battery_init
-tracker_config_set_enable_content_indexing
-tracker_config_set_enable_indexing
-tracker_config_set_enable_stemmer
-tracker_config_set_enable_thumbnails
-tracker_config_set_enable_watches
-tracker_config_set_fast_merges
-tracker_config_set_index_mounted_directories
-tracker_config_set_index_removable_devices
-tracker_config_set_initial_sleep
-tracker_config_set_language
-tracker_config_set_low_disk_space_limit
-tracker_config_set_low_memory_mode
-tracker_config_set_max_bucket_count
-tracker_config_set_max_text_to_index
-tracker_config_set_max_word_length
-tracker_config_set_max_words_to_index
-tracker_config_set_min_bucket_count
-tracker_config_set_min_word_length
-tracker_config_set_nfs_locking
-tracker_config_set_throttle
-tracker_config_set_verbosity
-<SUBSECTION Standard>
-TrackerConfigClass
-TRACKER_CONFIG
-TRACKER_IS_CONFIG
-TRACKER_TYPE_CONFIG
-tracker_config_get_type
-TRACKER_CONFIG_CLASS
-TRACKER_IS_CONFIG_CLASS
-TRACKER_CONFIG_GET_CLASS
-</SECTION>
-
 <INCLUDE>libtracker-common/tracker-type-utils.h</INCLUDE>
 <SECTION>
 <FILE>tracker-type-utils</FILE>
diff --git a/src/Makefile.am b/src/Makefile.am
index 2aaf4a5..5db714b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -16,7 +16,7 @@ SUBDIRS = 					\
 	tracker-miner-fs
 
 if HAVE_TRACKER_PREFERENCES
-SUBDIRS += tracker-preferences
+# SUBDIRS += tracker-preferences
 endif
 
 if HAVE_TRACKER_APPLET
@@ -52,5 +52,7 @@ DIST_SUBDIRS = 					\
 	libtracker-gtk				\
 	tracker-applet	 			\
 	tracker-search-tool			\
-	tracker-preferences			\
 	plugins
+
+# Disabled for now
+# tracker-preferences			
diff --git a/src/libtracker-common/Makefile.am b/src/libtracker-common/Makefile.am
index 42dfc65..048c60a 100644
--- a/src/libtracker-common/Makefile.am
+++ b/src/libtracker-common/Makefile.am
@@ -60,7 +60,6 @@ libtracker_common_la_SOURCES =	 			\
 	tracker-class.c					\
 	tracker-dbus.c	 				\
 	tracker-file-utils.c				\
-	tracker-global-config.c				\
 	tracker-ioprio.c				\
 	tracker-language.c				\
 	tracker-log.c	 				\
@@ -92,7 +91,6 @@ libtracker_commoninclude_HEADERS =			\
 	tracker-class.h					\
 	tracker-common.h				\
 	tracker-file-utils.h				\
-	tracker-global-config.h				\
 	tracker-language.h				\
 	tracker-module-config.h				\
 	tracker-namespace.h				\
diff --git a/src/libtracker-common/tracker-common.h b/src/libtracker-common/tracker-common.h
index 99a1653..a8f191f 100644
--- a/src/libtracker-common/tracker-common.h
+++ b/src/libtracker-common/tracker-common.h
@@ -33,7 +33,6 @@ G_BEGIN_DECLS
 #define __LIBTRACKER_COMMON_INSIDE__
 
 #include "tracker-class.h"
-#include "tracker-global-config.h"
 #include "tracker-file-utils.h"
 #include "tracker-language.h"
 #include "tracker-module-config.h"
diff --git a/src/libtracker-common/tracker-language.c b/src/libtracker-common/tracker-language.c
index 727c200..48bb581 100644
--- a/src/libtracker-common/tracker-language.c
+++ b/src/libtracker-common/tracker-language.c
@@ -36,9 +36,9 @@ typedef struct _TrackerLanguagePriv TrackerLanguagePriv;
 typedef struct _Languages	    Languages;
 
 struct _TrackerLanguagePriv {
-	TrackerConfig *config;
-
 	GHashTable    *stop_words;
+	gboolean       enable_stemmer;
+	gchar         *language_code;
 
 	GMutex	      *stemmer_mutex;
 	gpointer       stemmer;
@@ -70,8 +70,9 @@ static Languages all_langs[] = {
 enum {
 	PROP_0,
 
-	PROP_CONFIG,
-	PROP_STOP_WORDS
+	PROP_ENABLE_STEMMER,
+	PROP_STOP_WORDS,
+	PROP_LANGUAGE_CODE,
 };
 
 static void	    language_finalize	       (GObject       *object);
@@ -83,9 +84,6 @@ static void	    language_set_property      (GObject       *object,
 						guint	       param_id,
 						const GValue  *value,
 						GParamSpec    *pspec);
-static void	    language_notify_cb	       (TrackerConfig *config,
-						GParamSpec    *param,
-						gpointer       user_data);
 
 G_DEFINE_TYPE (TrackerLanguage, tracker_language, G_TYPE_OBJECT);
 
@@ -99,12 +97,12 @@ tracker_language_class_init (TrackerLanguageClass *klass)
 	object_class->set_property = language_set_property;
 
 	g_object_class_install_property (object_class,
-					 PROP_CONFIG,
-					 g_param_spec_object ("config",
-							      "Config",
-							      "Config",
-							      tracker_config_get_type (),
-							      G_PARAM_READWRITE));
+					 PROP_ENABLE_STEMMER,
+					 g_param_spec_boolean ("enable-stemmer",
+							       "Enable stemmer",
+							       "Enable stemmer",
+							       TRUE,
+							       G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
 
 	g_object_class_install_property (object_class,
 					 PROP_STOP_WORDS,
@@ -114,6 +112,14 @@ tracker_language_class_init (TrackerLanguageClass *klass)
 							     g_hash_table_get_type (),
 							     G_PARAM_READABLE));
 
+	g_object_class_install_property (object_class,
+					 PROP_LANGUAGE_CODE,
+					 g_param_spec_string ("language-code",
+							      "Language code",
+							      "Language code",
+							      "en",
+							      G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
 	g_type_class_add_private (object_class, sizeof (TrackerLanguagePriv));
 }
 
@@ -143,13 +149,6 @@ language_finalize (GObject *object)
 
 	priv = GET_PRIV (object);
 
-	if (priv->config) {
-		g_signal_handlers_disconnect_by_func (priv->config,
-						      language_notify_cb,
-						      TRACKER_LANGUAGE (object));
-		g_object_unref (priv->config);
-	}
-
 	if (priv->stemmer) {
 		g_mutex_lock (priv->stemmer_mutex);
 		sb_stemmer_delete (priv->stemmer);
@@ -162,6 +161,8 @@ language_finalize (GObject *object)
 		g_hash_table_unref (priv->stop_words);
 	}
 
+	g_free (priv->language_code);
+
 	(G_OBJECT_CLASS (tracker_language_parent_class)->finalize) (object);
 }
 
@@ -176,12 +177,15 @@ language_get_property (GObject	  *object,
 	priv = GET_PRIV (object);
 
 	switch (param_id) {
-	case PROP_CONFIG:
-		g_value_set_object (value, priv->config);
+	case PROP_ENABLE_STEMMER:
+		g_value_set_boolean (value, priv->enable_stemmer);
 		break;
 	case PROP_STOP_WORDS:
 		g_value_set_boxed (value, priv->stop_words);
 		break;
+	case PROP_LANGUAGE_CODE:
+		g_value_set_string (value, priv->language_code);
+		break;
 
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
@@ -196,9 +200,13 @@ language_set_property (GObject	    *object,
 		       GParamSpec   *pspec)
 {
 	switch (param_id) {
-	case PROP_CONFIG:
-		tracker_language_set_config (TRACKER_LANGUAGE (object),
-					     g_value_get_object (value));
+	case PROP_ENABLE_STEMMER:
+		tracker_language_set_enable_stemmer (TRACKER_LANGUAGE (object),
+						     g_value_get_boolean (value));
+		break;
+	case PROP_LANGUAGE_CODE:
+		tracker_language_set_language_code (TRACKER_LANGUAGE (object),
+						    g_value_get_string (value));
 		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
@@ -306,46 +314,28 @@ language_set_stopword_list (TrackerLanguage *language,
 	g_free (stem_language_lower);
 }
 
-static void
-language_notify_cb (TrackerConfig *config,
-		    GParamSpec	  *param,
-		    gpointer	   user_data)
-{
-	TrackerLanguage *language;
-
-	language = (TrackerLanguage*) user_data;
-
-	language_set_stopword_list (language,
-				    tracker_config_get_language (config));
-}
-
 TrackerLanguage *
-tracker_language_new (TrackerConfig *config)
+tracker_language_new (const gchar *language_code)
 {
 	TrackerLanguage *language;
-	g_return_val_if_fail (TRACKER_IS_CONFIG (config), NULL);
 
-	language = g_object_new (TRACKER_TYPE_LANGUAGE,
-				 "config", config,
+	language = g_object_new (TRACKER_TYPE_LANGUAGE, 
+				 "language-code", language_code,
 				 NULL);
 
-	language_set_stopword_list (language,
-				    tracker_config_get_language (config));
-
 	return language;
-
 }
 
-TrackerConfig *
-tracker_language_get_config (TrackerLanguage *language)
+gboolean
+tracker_language_get_enable_stemmer (TrackerLanguage *language)
 {
 	TrackerLanguagePriv *priv;
 
-	g_return_val_if_fail (TRACKER_IS_LANGUAGE (language), NULL);
+	g_return_val_if_fail (TRACKER_IS_LANGUAGE (language), TRUE);
 
 	priv = GET_PRIV (language);
 
-	return priv->config;
+	return priv->enable_stemmer;
 }
 
 GHashTable *
@@ -360,37 +350,54 @@ tracker_language_get_stop_words (TrackerLanguage *language)
 	return priv->stop_words;
 }
 
+const gchar *
+tracker_language_get_language_code (TrackerLanguage *language)
+{
+	TrackerLanguagePriv *priv;
+
+	g_return_val_if_fail (TRACKER_IS_LANGUAGE (language), NULL);
+
+	priv = GET_PRIV (language);
+
+	return priv->language_code;
+}
+	
 void
-tracker_language_set_config (TrackerLanguage *language,
-			     TrackerConfig   *config)
+tracker_language_set_enable_stemmer (TrackerLanguage *language,
+				     gboolean         value)
 {
 	TrackerLanguagePriv *priv;
 
 	g_return_if_fail (TRACKER_IS_LANGUAGE (language));
-	g_return_if_fail (TRACKER_IS_CONFIG (config));
 
 	priv = GET_PRIV (language);
 
-	if (config) {
-		g_object_ref (config);
-	}
+	priv->enable_stemmer = value;
 
-	if (priv->config) {
-		g_signal_handlers_disconnect_by_func (priv->config,
-						      G_CALLBACK (language_notify_cb),
-						      language);
-		g_object_unref (priv->config);
-	}
+	g_object_notify (G_OBJECT (language), "enable-stemmer");
+}
 
-	priv->config = config;
+void
+tracker_language_set_language_code (TrackerLanguage *language,
+				    const gchar     *value)
+{
+	TrackerLanguagePriv *priv;
+
+	g_return_if_fail (TRACKER_IS_LANGUAGE (language));
 
-	if (priv->config) {
-		g_signal_connect (priv->config, "notify::language",
-				  G_CALLBACK (language_notify_cb),
-				  language);
+	priv = GET_PRIV (language);
+
+	g_free (priv->language_code);
+
+	priv->language_code = g_strdup (value);
+
+	if (!priv->language_code) {
+		priv->language_code = g_strdup ("en");
 	}
 
-	g_object_notify (G_OBJECT (language), "config");
+	language_set_stopword_list (language, priv->language_code);
+
+	g_object_notify (G_OBJECT (language), "language-code");
 }
 
 const gchar *
@@ -405,7 +412,7 @@ tracker_language_stem_word (TrackerLanguage *language,
 
 	priv = GET_PRIV (language);
 
-	if (!tracker_config_get_enable_stemmer (priv->config)) {
+	if (!priv->enable_stemmer) {
 		return g_strdup (word);
 	}
 
diff --git a/src/libtracker-common/tracker-language.h b/src/libtracker-common/tracker-language.h
index 561951c..61a0da4 100644
--- a/src/libtracker-common/tracker-language.h
+++ b/src/libtracker-common/tracker-language.h
@@ -24,8 +24,6 @@
 
 #include <glib-object.h>
 
-#include "tracker-global-config.h"
-
 G_BEGIN_DECLS
 
 #if !defined (__LIBTRACKER_COMMON_INSIDE__) && !defined (TRACKER_COMPILATION)
@@ -50,25 +48,28 @@ struct _TrackerLanguageClass {
 	GObjectClass parent_class;
 };
 
-GType		 tracker_language_get_type	   (void) G_GNUC_CONST;
+GType		 tracker_language_get_type	     (void) G_GNUC_CONST;
+TrackerLanguage *tracker_language_new                (const gchar     *language_code);
 
-TrackerLanguage *tracker_language_new		   (TrackerConfig   *language);
-TrackerConfig *  tracker_language_get_config	   (TrackerLanguage *language);
-GHashTable *	 tracker_language_get_stop_words   (TrackerLanguage *language);
-void		 tracker_language_set_config	   (TrackerLanguage *language,
-						    TrackerConfig   *config);
-const gchar *	 tracker_language_stem_word	   (TrackerLanguage *language,
-						    const gchar     *word,
-						    gint	     word_length);
+gboolean         tracker_language_get_enable_stemmer (TrackerLanguage *language);
+GHashTable *     tracker_language_get_stop_words     (TrackerLanguage *language);
+const gchar *    tracker_language_get_language_code  (TrackerLanguage *language);
 
-/* Utility functions */
-gboolean	 tracker_language_check_exists	   (const gchar     *language_code);
-gchar *		 tracker_language_get_default_code (void);
+void             tracker_language_set_enable_stemmer (TrackerLanguage *language,
+						      gboolean         value);
+void             tracker_language_set_language_code  (TrackerLanguage *language,
+						      const gchar     *language_code);
 
-GSList *         tracker_language_get_all_by_code  (void);
+const gchar *    tracker_language_stem_word          (TrackerLanguage *language,
+						      const gchar     *word,
+						      gint             word_length);
 
-const gchar *    tracker_language_get_name_by_code (const gchar     *language_code);
-const gchar *    tracker_language_get_code_by_name (const gchar     *langauge_name);
+/* Utility functions */
+gboolean         tracker_language_check_exists       (const gchar     *language_code);
+gchar *          tracker_language_get_default_code   (void);
+GSList *         tracker_language_get_all_by_code    (void);
+const gchar *    tracker_language_get_name_by_code   (const gchar     *language_code);
+const gchar *    tracker_language_get_code_by_name   (const gchar     *langauge_name);
 
 G_END_DECLS
 
diff --git a/src/libtracker-common/tracker-thumbnailer.c b/src/libtracker-common/tracker-thumbnailer.c
index 1cd9db0..5cf9f5c 100644
--- a/src/libtracker-common/tracker-thumbnailer.c
+++ b/src/libtracker-common/tracker-thumbnailer.c
@@ -25,7 +25,6 @@
 
 #include <tracker-miner-fs/tracker-module-file.h>
 
-#include "tracker-global-config.h"
 #include "tracker-dbus.h"
 #include "tracker-thumbnailer.h"
 
@@ -40,8 +39,6 @@
 #define THUMBNAIL_REQUEST_LIMIT 50
 
 typedef struct {
-	TrackerConfig *config;
-
 	DBusGProxy *requester_proxy;
 	DBusGProxy *manager_proxy;
 
@@ -56,10 +53,6 @@ typedef struct {
 	gboolean service_is_enabled;
 } TrackerThumbnailerPrivate;
 
-static void thumbnailer_enabled_cb (GObject    *pspec,
-				    GParamSpec *gobject,
-				    gpointer    user_data);
-
 static GStaticPrivate private_key = G_STATIC_PRIVATE_INIT;
 
 static void
@@ -69,14 +62,6 @@ private_free (gpointer data)
 
 	private = data;
 
-	if (private->config) {
-		g_signal_handlers_disconnect_by_func (private->config, 
-						      thumbnailer_enabled_cb, 
-						      NULL); 
-
-		g_object_unref (private->config);
-	}
-	
 	if (private->requester_proxy) {
 		g_object_unref (private->requester_proxy);
 	}
@@ -118,41 +103,16 @@ should_be_thumbnailed (GStrv        list,
 	return should_thumbnail;
 }
 
-static void 
-thumbnailer_enabled_cb (GObject    *pspec,
-			GParamSpec *gobject,
-			gpointer    user_data)
-{
-	TrackerThumbnailerPrivate *private;
-
-	private = g_static_private_get (&private_key);
-	g_return_if_fail (private != NULL);
-
-	private->service_is_enabled = tracker_config_get_enable_thumbnails (private->config);
-
-	g_message ("Thumbnailer service %s", 
-		   private->service_is_enabled ? "enabled" : "disabled");
-}
-
 void
-tracker_thumbnailer_init (TrackerConfig *config)
+tracker_thumbnailer_init (void)
 {
 	TrackerThumbnailerPrivate *private;
 	DBusGConnection *connection;
 	GStrv mime_types = NULL;
 	GError *error = NULL;
 
-	g_return_if_fail (TRACKER_IS_CONFIG (config));
-
 	private = g_new0 (TrackerThumbnailerPrivate, 1);
 
-	private->config = g_object_ref (config);
-	private->service_is_enabled = tracker_config_get_enable_thumbnails (private->config);
-
-	g_signal_connect (private->config, "notify::enable-thumbnails",
-			  G_CALLBACK (thumbnailer_enabled_cb), 
-			  NULL);
-
 	g_static_private_set (&private_key,
 			      private,
 			      private_free);
diff --git a/src/libtracker-common/tracker-thumbnailer.h b/src/libtracker-common/tracker-thumbnailer.h
index 183c7dc..d662237 100644
--- a/src/libtracker-common/tracker-thumbnailer.h
+++ b/src/libtracker-common/tracker-thumbnailer.h
@@ -22,15 +22,13 @@
 #ifndef __LIBTRACKER_COMMON_THUMBNAILER_H__
 #define __LIBTRACKER_COMMON_THUMBNAILER_H__
 
-#include "tracker-global-config.h"
-
 G_BEGIN_DECLS
 
 #if !defined (__LIBTRACKER_COMMON_INSIDE__) && !defined (TRACKER_COMPILATION)
 #error "only <libtracker-common/tracker-common.h> must be included directly."
 #endif
 
-void tracker_thumbnailer_init       (TrackerConfig *config);
+void tracker_thumbnailer_init       (void);
 void tracker_thumbnailer_shutdown   (void);
 void tracker_thumbnailer_queue_file (const gchar   *path,
 				     const gchar   *mime);
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 5603871..a0c26df 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -61,34 +61,8 @@
 
 #define ZLIBBUFSIZ 8192
 
-typedef struct {
-	TrackerConfig	*config;
-	TrackerLanguage *language;
-} TrackerDBPrivate;
-
-/* Private */
-static GStaticPrivate private_key = G_STATIC_PRIVATE_INIT;
-
 static gchar		  *ontologies_dir;
-
-static void
-private_free (gpointer data)
-{
-	TrackerDBPrivate *private;
-
-	private = data;
-
-	if (private->config) {
-		g_object_unref (private->config);
-	}
-
-	if (private->language) {
-		g_object_unref (private->language);
-	}
-
-	g_free (private);
-}
-
+static gboolean            initialized;
 
 static void
 load_ontology_file_from_path (const gchar	 *ontology_file)
@@ -772,35 +746,17 @@ create_fts_table (TrackerDBInterface *iface)
 }
 
 gboolean
-tracker_data_manager_init (TrackerConfig              *config,
-			   TrackerLanguage            *language,
-			   TrackerDBManagerFlags       flags,
+tracker_data_manager_init (TrackerDBManagerFlags       flags,
 			   const gchar                *test_schema,
 			   gboolean                   *first_time)
 {
-	TrackerDBPrivate *private;
 	TrackerDBInterface *iface;
 	gboolean is_first_time_index;
 
-	g_return_val_if_fail (TRACKER_IS_CONFIG (config), FALSE);
-	g_return_val_if_fail (TRACKER_IS_LANGUAGE (language), FALSE);
-
-	private = g_static_private_get (&private_key);
-	if (private) {
-		g_warning ("Already initialized (%s)",
-			   __FUNCTION__);
-		return FALSE;
+	if (initialized) {
+		return TRUE;
 	}
 
-	private = g_new0 (TrackerDBPrivate, 1);
-
-	private->config = g_object_ref (config);
-	private->language = g_object_ref (language);
-
-	g_static_private_set (&private_key,
-			      private,
-			      private_free);
-
 	tracker_db_manager_init (flags, &is_first_time_index, FALSE);
 
 	if (first_time != NULL) {
@@ -901,46 +857,17 @@ tracker_data_manager_init (TrackerConfig              *config,
 		create_decomposed_transient_metadata_tables (iface);
 	}
 
+	initialized = TRUE;
+
 	return TRUE;
 }
 
 void
 tracker_data_manager_shutdown (void)
 {
-	TrackerDBPrivate *private;
+	g_return_if_fail (initialized == TRUE);
 
 	tracker_db_manager_shutdown ();
-
-	private = g_static_private_get (&private_key);
-	if (!private) {
-		g_warning ("Not initialized (%s)",
-			   __FUNCTION__);
-		return;
-	}
-
-	g_static_private_free (&private_key);
-}
-
-TrackerConfig *
-tracker_data_manager_get_config (void)
-{
-	TrackerDBPrivate   *private;
-
-	private = g_static_private_get (&private_key);
-	g_return_val_if_fail (private != NULL, NULL);
-
-	return private->config;
-}
-
-TrackerLanguage *
-tracker_data_manager_get_language (void)
-{
-	TrackerDBPrivate   *private;
-
-	private = g_static_private_get (&private_key);
-	g_return_val_if_fail (private != NULL, NULL);
-
-	return private->language;
 }
 
 gint
diff --git a/src/libtracker-data/tracker-data-manager.h b/src/libtracker-data/tracker-data-manager.h
index 05a6588..012a6c2 100644
--- a/src/libtracker-data/tracker-data-manager.h
+++ b/src/libtracker-data/tracker-data-manager.h
@@ -26,7 +26,6 @@
 
 #include <glib.h>
 
-#include <libtracker-common/tracker-global-config.h>
 #include <libtracker-common/tracker-language.h>
 #include <libtracker-common/tracker-ontology.h>
 
@@ -35,14 +34,10 @@
 
 G_BEGIN_DECLS
 
-gboolean            tracker_data_manager_init              (TrackerConfig              *config,
-							    TrackerLanguage            *language,
-							    TrackerDBManagerFlags       flags,
+gboolean            tracker_data_manager_init              (TrackerDBManagerFlags       flags,
 							    const gchar                *test_schema,
 							    gboolean                   *first_time);
 void                tracker_data_manager_shutdown          (void);
-TrackerConfig *     tracker_data_manager_get_config        (void);
-TrackerLanguage *   tracker_data_manager_get_language      (void);
 
 gint                tracker_data_manager_get_db_option_int (const gchar        *option);
 void                tracker_data_manager_set_db_option_int (const gchar        *option,
diff --git a/src/libtracker-data/tracker-data-query.h b/src/libtracker-data/tracker-data-query.h
index 7508055..6dae339 100644
--- a/src/libtracker-data/tracker-data-query.h
+++ b/src/libtracker-data/tracker-data-query.h
@@ -26,7 +26,6 @@
 
 #include <glib.h>
 
-#include <libtracker-common/tracker-global-config.h>
 #include <libtracker-common/tracker-language.h>
 #include <libtracker-common/tracker-ontology.h>
 #include <libtracker-common/tracker-property.h>
diff --git a/src/tracker-extract/Makefile.am b/src/tracker-extract/Makefile.am
index 4affa01..2b4627a 100644
--- a/src/tracker-extract/Makefile.am
+++ b/src/tracker-extract/Makefile.am
@@ -238,6 +238,8 @@ libextract_playlist_la_LIBADD = $(GLIB2_LIBS) $(TOTEM_PL_PARSER_LIBS) $(GCOV_LIB
 libexec_PROGRAMS = tracker-extract
 
 tracker_extract_SOURCES = 						\
+	tracker-config.c						\
+	tracker-config.h						\
 	tracker-dbus.c							\
 	tracker-dbus.h							\
 	tracker-extract.c						\
@@ -245,7 +247,6 @@ tracker_extract_SOURCES = 						\
 	tracker-main.c							\
 	tracker-main.h							
 
-
 tracker_extract_LDADD = 						\
 	$(top_builddir)/src/libtracker-common/libtracker-common.la	\
 	$(GMODULE_LIBS)							\
diff --git a/src/tracker-extract/tracker-config.c b/src/tracker-extract/tracker-config.c
new file mode 100644
index 0000000..384dad4
--- /dev/null
+++ b/src/tracker-extract/tracker-config.c
@@ -0,0 +1,536 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008, Nokia (urho konttori nokia com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA  02110-1301, USA.
+ */
+
+#include "config.h"
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <glib.h>
+#include <gio/gio.h>
+
+#include <libtracker-common/tracker-file-utils.h>
+#include <libtracker-common/tracker-type-utils.h>
+
+#include "tracker-config.h"
+
+#define TRACKER_CONFIG_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TRACKER_TYPE_CONFIG, TrackerConfigPrivate))
+
+/* GKeyFile defines */
+#define GROUP_GENERAL				 "General"
+#define KEY_VERBOSITY				 "Verbosity"
+
+/* Default values */
+#define DEFAULT_VERBOSITY			 0
+
+typedef struct _TrackerConfigPrivate TrackerConfigPrivate;
+
+struct _TrackerConfigPrivate {
+	GFile	     *file;
+	GFileMonitor *monitor;
+
+	GKeyFile     *key_file;
+
+	/* General */
+	gint	      verbosity;
+};
+
+static void     config_finalize             (GObject       *object);
+static void     config_get_property         (GObject       *object,
+					     guint          param_id,
+					     GValue        *value,
+					     GParamSpec    *pspec);
+static void     config_set_property         (GObject       *object,
+					     guint          param_id,
+					     const GValue  *value,
+					     GParamSpec    *pspec);
+static void     config_load                 (TrackerConfig *config);
+static gboolean config_save                 (TrackerConfig *config);
+static void     config_create_with_defaults (GKeyFile      *key_file,
+					     gboolean       overwrite);
+
+enum {
+	PROP_0,
+
+	/* General */
+	PROP_VERBOSITY,
+};
+
+G_DEFINE_TYPE (TrackerConfig, tracker_config, G_TYPE_OBJECT);
+
+static void
+tracker_config_class_init (TrackerConfigClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+	object_class->finalize	   = config_finalize;
+	object_class->get_property = config_get_property;
+	object_class->set_property = config_set_property;
+
+	/* General */
+	g_object_class_install_property (object_class,
+					 PROP_VERBOSITY,
+					 g_param_spec_int ("verbosity",
+							   "Log verbosity",
+							   "How much logging we have "
+							   "(0=errors, 1=minimal, 2=detailed, 3=debug)",
+							   0,
+							   3,
+							   DEFAULT_VERBOSITY,
+							   G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+	g_type_class_add_private (object_class, sizeof (TrackerConfigPrivate));
+}
+
+static void
+tracker_config_init (TrackerConfig *object)
+{
+	TrackerConfigPrivate *priv;
+
+	priv = TRACKER_CONFIG_GET_PRIVATE (object);
+
+	priv->key_file = g_key_file_new ();
+}
+
+static void
+config_finalize (GObject *object)
+{
+	TrackerConfigPrivate *priv;
+
+	priv = TRACKER_CONFIG_GET_PRIVATE (object);
+
+	if (priv->key_file) {
+		g_key_file_free (priv->key_file);
+	}
+
+	if (priv->monitor) {
+		g_object_unref (priv->monitor);
+	}
+
+	if (priv->file) {
+		g_object_unref (priv->file);
+	}
+
+	(G_OBJECT_CLASS (tracker_config_parent_class)->finalize) (object);
+}
+
+static void
+config_get_property (GObject	*object,
+		     guint	 param_id,
+		     GValue	*value,
+		     GParamSpec *pspec)
+{
+	TrackerConfigPrivate *priv;
+
+	priv = TRACKER_CONFIG_GET_PRIVATE (object);
+
+	switch (param_id) {
+		/* General */
+	case PROP_VERBOSITY:
+		g_value_set_int (value, priv->verbosity);
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+		break;
+	};
+}
+
+static void
+config_set_property (GObject	  *object,
+		     guint	   param_id,
+		     const GValue *value,
+		     GParamSpec	  *pspec)
+{
+	switch (param_id) {
+		/* General */
+	case PROP_VERBOSITY:
+		tracker_config_set_verbosity (TRACKER_CONFIG (object),
+					      g_value_get_int (value));
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+		break;
+	};
+}
+
+static gchar *
+config_dir_ensure_exists_and_return (void)
+{
+	gchar *directory;
+
+	directory = g_build_filename (g_get_user_config_dir (),
+				      "tracker",
+				      NULL);
+
+	if (!g_file_test (directory, G_FILE_TEST_EXISTS)) {
+		g_print ("Creating config directory:'%s'\n", directory);
+
+		if (g_mkdir_with_parents (directory, 0700) == -1) {
+			g_warning ("Could not create configuration directory");
+			g_free (directory);
+			return NULL;
+		}
+	}
+
+	return directory;
+}
+
+static void
+config_create_with_defaults (GKeyFile *key_file, 
+			     gboolean  overwrite)
+{
+	g_message ("Loading defaults into GKeyFile...");
+
+	/* General */
+	if (overwrite || !g_key_file_has_key (key_file, GROUP_GENERAL, KEY_VERBOSITY, NULL)) {
+		g_key_file_set_integer (key_file, GROUP_GENERAL, KEY_VERBOSITY, 
+					DEFAULT_VERBOSITY);
+		g_key_file_set_comment (key_file, GROUP_GENERAL, KEY_VERBOSITY,
+					" Log Verbosity (0=errors, 1=minimal, 2=detailed, 3=debug)",
+					NULL);
+	}
+}
+
+static gboolean
+config_save_with_defaults (const gchar *filename,
+			   GKeyFile    *key_file)
+{
+	GError *error = NULL;
+	gchar  *content = NULL;
+
+	/* Save to file */
+	content = g_key_file_to_data (key_file, NULL, &error);
+
+	if (error) {
+		g_warning ("Couldn't produce default configuration, %s", error->message);
+		g_clear_error (&error);
+		return FALSE;
+	}
+
+	if (!g_file_set_contents (filename, content, -1, &error)) {
+		g_warning ("Couldn't write default configuration, %s", error->message);
+		g_clear_error (&error);
+		g_free (content);
+		return FALSE;
+	}
+
+	g_print ("Writing default configuration to file:'%s'\n", filename);
+	g_free (content);
+
+	return TRUE;
+}
+
+static void
+config_load_int (TrackerConfig *config,
+		 const gchar   *property,
+		 GKeyFile      *key_file,
+		 const gchar   *group,
+		 const gchar   *key)
+{
+	GError *error = NULL;
+	gint	value;
+
+	value = g_key_file_get_integer (key_file, group, key, &error);
+	if (!error) {
+		g_object_set (G_OBJECT (config), property, value, NULL);
+	} else {
+		g_message ("Couldn't load config option '%s' (int) in group '%s', %s",
+			   property, group, error->message);
+		g_error_free (error);
+	}
+}
+
+static void
+config_save_int (TrackerConfig *config,
+		 const gchar   *property,
+		 GKeyFile      *key_file,
+		 const gchar   *group,
+		 const gchar   *key)
+{
+	gint value;
+
+	g_object_get (G_OBJECT (config), property, &value, NULL);
+	g_key_file_set_integer (key_file, group, key, value);
+}
+
+static void
+config_changed_cb (GFileMonitor     *monitor,
+		   GFile	    *file,
+		   GFile	    *other_file,
+		   GFileMonitorEvent event_type,
+		   gpointer	     user_data)
+{
+	TrackerConfig *config;
+	gchar	      *filename;
+
+	config = TRACKER_CONFIG (user_data);
+
+	/* Do we recreate if the file is deleted? */
+
+	switch (event_type) {
+	case G_FILE_MONITOR_EVENT_CHANGED:
+	case G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT:
+		filename = g_file_get_path (file);
+		g_message ("Config file changed:'%s', reloading settings...",
+			   filename);
+		g_free (filename);
+
+		config_load (config);
+		break;
+
+	case G_FILE_MONITOR_EVENT_DELETED:
+	case G_FILE_MONITOR_EVENT_CREATED:
+	case G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED:
+	case G_FILE_MONITOR_EVENT_PRE_UNMOUNT:
+	case G_FILE_MONITOR_EVENT_UNMOUNTED:
+	default:
+		break;
+	}
+}
+
+static void
+config_load (TrackerConfig *config)
+{
+	TrackerConfigPrivate *priv;
+	GError		     *error = NULL;
+	gchar                *basename;
+	gchar		     *filename;
+	gchar		     *directory;
+
+	/* Check we have a config file and if not, create it based on
+	 * the default settings.
+	 */
+	directory = config_dir_ensure_exists_and_return ();
+	if (!directory) {
+		return;
+	}
+
+	basename = g_strdup_printf ("%s.cfg", g_get_application_name ());
+	filename = g_build_filename (directory, basename, NULL);
+	g_free (basename);
+	g_free (directory);
+
+	priv = TRACKER_CONFIG_GET_PRIVATE (config);
+
+	/* Add file monitoring for changes */
+	if (!priv->file) {
+		priv->file = g_file_new_for_path (filename);
+	}
+
+	if (!priv->monitor) {
+		g_message ("Setting up monitor for changes to config file:'%s'",
+			   filename);
+
+		priv->monitor = g_file_monitor_file (priv->file,
+						     G_FILE_MONITOR_NONE,
+						     NULL,
+						     NULL);
+
+		g_signal_connect (priv->monitor, "changed",
+				  G_CALLBACK (config_changed_cb),
+				  config);
+	}
+
+	/* Load options */
+	g_key_file_load_from_file (priv->key_file, 
+				   filename, 
+				   G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS,
+				   &error);
+
+	config_create_with_defaults (priv->key_file, FALSE);
+
+	if (error) {
+		config_save_with_defaults (filename, priv->key_file);
+		g_clear_error (&error);
+	}
+
+	g_free (filename);
+
+	/* General */
+	config_load_int (config, "verbosity", priv->key_file, GROUP_GENERAL, KEY_VERBOSITY);
+}
+
+static gboolean
+config_save (TrackerConfig *config)
+{
+	TrackerConfigPrivate *priv;
+	GError		     *error = NULL;
+	gchar		     *filename;
+	gchar		     *data;
+	gsize                 size;
+
+	priv = TRACKER_CONFIG_GET_PRIVATE (config);
+
+	if (!priv->key_file) {
+		g_critical ("Could not save config, GKeyFile was NULL, has the config been loaded?");
+
+		return FALSE;
+	}
+
+	g_message ("Setting details to GKeyFile object...");
+
+	/* Set properties to GKeyFile */
+	config_save_int (config, "verbosity", priv->key_file, GROUP_GENERAL, KEY_VERBOSITY);
+
+	g_message ("Saving config to disk...");
+
+	/* Do the actual saving to disk now */
+	data = g_key_file_to_data (priv->key_file, &size, &error);
+	if (error) {
+		g_warning ("Could not get config data to write to file, %s",
+			   error->message);
+		g_error_free (error);
+
+		return FALSE;
+	}
+
+	filename = g_file_get_path (priv->file);
+
+	g_file_set_contents (filename, data, size, &error);
+	g_free (data);
+
+	if (error) {
+		g_warning ("Could not write %" G_GSIZE_FORMAT " bytes to file '%s', %s",
+			   size,
+			   filename,
+			   error->message);
+		g_free (filename);
+		g_error_free (error);
+
+		return FALSE;
+	}
+
+	g_message ("Wrote config to '%s' (%" G_GSIZE_FORMAT " bytes)",
+		   filename, 
+		   size);
+
+	g_free (filename);
+
+	return TRUE;
+}
+
+static gboolean
+config_int_validate (TrackerConfig *config,
+		     const gchar   *property,
+		     gint	    value)
+{
+#ifdef G_DISABLE_CHECKS
+	GParamSpec *spec;
+	GValue	    value = { 0 };
+	gboolean    valid;
+
+	spec = g_object_class_find_property (G_OBJECT_CLASS (config), property);
+	g_return_val_if_fail (spec != NULL, FALSE);
+
+	g_value_init (&value, spec->value_type);
+	g_value_set_int (&value, verbosity);
+	valid = g_param_value_validate (spec, &value);
+	g_value_unset (&value);
+
+	g_return_val_if_fail (valid != TRUE, FALSE);
+#endif
+
+	return TRUE;
+}
+
+/**
+ * tracker_config_new:
+ *
+ * Creates a new GObject for handling Tracker's config file.
+ *
+ * Return value: A new TrackerConfig object. Must be unreferenced when
+ * finished with.
+ */
+TrackerConfig *
+tracker_config_new (void)
+{
+	TrackerConfig *config;
+
+	config = g_object_new (TRACKER_TYPE_CONFIG, NULL);
+	config_load (config);
+
+	return config;
+}
+
+/**
+ * tracker_config_save:
+ * @config: a #TrackerConfig
+ *
+ * Writes the configuration stored in TrackerConfig to disk.
+ *
+ * Return value: %TRUE on success, %FALSE otherwise.
+ */
+gboolean
+tracker_config_save (TrackerConfig *config)
+{
+	g_return_val_if_fail (TRACKER_IS_CONFIG (config), FALSE);
+
+	return config_save (config);
+}
+
+/**
+ * tracker_config_get_verbosity:
+ * @config: a #TrackerConfig
+ *
+ * Gets the verbosity of the logging in the indexer and the daemon.
+ *
+ * If the verbosity is 0, there is no logging except for warnings and
+ * errors.
+ * If the verbosity is 1, information is displayed.
+ * If the verbosity is 2, general messages are displayed.
+ * If the verbosity is 3, debug messages are displayed.
+ *
+ * Note, you receive logging for anything less priority than the
+ * verbosity level as well as the level you set. So if the verbosity
+ * is 3 you receive debug, messages, info and warnings.
+ *
+ * Return value: An integer value from 0 to 3.
+ */
+gint
+tracker_config_get_verbosity (TrackerConfig *config)
+{
+	TrackerConfigPrivate *priv;
+
+	g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_VERBOSITY);
+
+	priv = TRACKER_CONFIG_GET_PRIVATE (config);
+
+	return priv->verbosity;
+}
+
+void
+tracker_config_set_verbosity (TrackerConfig *config,
+			      gint	     value)
+{
+	TrackerConfigPrivate *priv;
+
+	g_return_if_fail (TRACKER_IS_CONFIG (config));
+
+	if (!config_int_validate (config, "verbosity", value)) {
+		return;
+	}
+
+	priv = TRACKER_CONFIG_GET_PRIVATE (config);
+
+	priv->verbosity = value;
+	g_object_notify (G_OBJECT (config), "verbosity");
+}
diff --git a/src/tracker-extract/tracker-config.h b/src/tracker-extract/tracker-config.h
new file mode 100644
index 0000000..157428b
--- /dev/null
+++ b/src/tracker-extract/tracker-config.h
@@ -0,0 +1,59 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc gnome org)
+ * Copyright (C) 2007, Michal Pryc (Michal Pryc Sun Com)
+ * Copyright (C) 2008, Nokia (urho konttori nokia com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA  02110-1301, USA.
+ */
+
+#ifndef __TRACKER_EXTRACT_CONFIG_H__
+#define __TRACKER_EXTRACT_CONFIG_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define TRACKER_TYPE_CONFIG	    (tracker_config_get_type ())
+#define TRACKER_CONFIG(o)	    (G_TYPE_CHECK_INSTANCE_CAST ((o), TRACKER_TYPE_CONFIG, TrackerConfig))
+#define TRACKER_CONFIG_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST ((k), TRACKER_TYPE_CONFIG, TrackerConfigClass))
+#define TRACKER_IS_CONFIG(o)	    (G_TYPE_CHECK_INSTANCE_TYPE ((o), TRACKER_TYPE_CONFIG))
+#define TRACKER_IS_CONFIG_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), TRACKER_TYPE_CONFIG))
+#define TRACKER_CONFIG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TRACKER_TYPE_CONFIG, TrackerConfigClass))
+
+typedef struct _TrackerConfig	   TrackerConfig;
+typedef struct _TrackerConfigClass TrackerConfigClass;
+
+struct _TrackerConfig {
+	GObject      parent;
+};
+
+struct _TrackerConfigClass {
+	GObjectClass parent_class;
+};
+
+GType	       tracker_config_get_type            (void) G_GNUC_CONST;
+
+TrackerConfig *tracker_config_new                 (void);
+gboolean       tracker_config_save                (TrackerConfig *config);
+gint           tracker_config_get_verbosity       (TrackerConfig *config);
+void           tracker_config_set_verbosity       (TrackerConfig *config,
+						   gint           value);
+
+G_END_DECLS
+
+#endif /* __TRACKER_EXTRACT_CONFIG_H__ */
+
diff --git a/src/tracker-extract/tracker-main.c b/src/tracker-extract/tracker-main.c
index c532ca6..89b6adc 100644
--- a/src/tracker-extract/tracker-main.c
+++ b/src/tracker-extract/tracker-main.c
@@ -44,12 +44,12 @@
 #endif
 
 #include <libtracker-common/tracker-log.h>
-#include <libtracker-common/tracker-global-config.h>
 #include <libtracker-common/tracker-dbus.h>
 #include <libtracker-common/tracker-os-dependant.h>
 #include <libtracker-common/tracker-thumbnailer.h>
 #include <libtracker-common/tracker-ioprio.h>
 
+#include "tracker-config.h"
 #include "tracker-main.h"
 #include "tracker-dbus.h"
 #include "tracker-extract.h"
@@ -389,7 +389,7 @@ main (int argc, char *argv[])
 	g_print ("Starting log:\n  File:'%s'\n", log_filename);
 	g_free (log_filename);
 
-	tracker_thumbnailer_init (config);
+	tracker_thumbnailer_init ();
 
 	/* Make Tracker available for introspection */
 	if (!tracker_dbus_register_objects ()) {
diff --git a/src/tracker-fts/Makefile.am b/src/tracker-fts/Makefile.am
index 0304d48..a6718fc 100644
--- a/src/tracker-fts/Makefile.am
+++ b/src/tracker-fts/Makefile.am
@@ -2,12 +2,13 @@ include $(top_srcdir)/Makefile.decl
 
 INCLUDES =							\
 	-I$(top_srcdir)/src					\
+	-DTRACKER_COMPILATION					\
+	-DNDEBUG						\
 	$(WARN_CFLAGS)						\
 	$(GLIB2_CFLAGS)						\
 	$(GCOV_CFLAGS)						\
 	$(PANGO_CFLAGS)						\
-	$(SQLITE3_CFLAGS)					\
-	-DNDEBUG
+	$(SQLITE3_CFLAGS)
 
 module_flags = -module -avoid-version -no-undefined
 
diff --git a/src/tracker-fts/tracker-fts.c b/src/tracker-fts/tracker-fts.c
index 3f72cd4..78242eb 100644
--- a/src/tracker-fts/tracker-fts.c
+++ b/src/tracker-fts/tracker-fts.c
@@ -279,12 +279,10 @@
 #include <ctype.h>
 #include <sqlite3ext.h>
 
-#define TRACKER_ENABLE_INTERNALS
 #include <libtracker-common/tracker-common.h>
-
-
 #include <libtracker-db/tracker-db-manager.h>
 
+#include "tracker-config.h"
 #include "tracker-fts.h"
 #include "tracker-fts-hash.h"
 
@@ -3403,9 +3401,9 @@ static int constructVtab(
 
   /* set up our parser */
 
-  TrackerConfig *config = tracker_config_new ();
+  TrackerConfig *config = tracker_config_new ("tracker-fts");
 
-  TrackerLanguage *language = tracker_language_new (config);
+  TrackerLanguage *language = tracker_language_new (NULL);
 
   int min_len = tracker_config_get_min_word_length (config);
   int max_len = tracker_config_get_max_word_length (config);
diff --git a/src/tracker-miner-fs/tracker-config.h b/src/tracker-miner-fs/tracker-config.h
index 50da4c9..d040635 100644
--- a/src/tracker-miner-fs/tracker-config.h
+++ b/src/tracker-miner-fs/tracker-config.h
@@ -20,17 +20,13 @@
  * Boston, MA  02110-1301, USA.
  */
 
-#ifndef __LIBTRACKER_COMMON_CONFIG_H__
-#define __LIBTRACKER_COMMON_CONFIG_H__
+#ifndef __TRACKER_MINER_FS_CONFIG_H__
+#define __TRACKER_MINER_FS_CONFIG_H__
 
 #include <glib-object.h>
 
 G_BEGIN_DECLS
 
-#if !defined (__LIBTRACKER_COMMON_INSIDE__) && !defined (TRACKER_COMPILATION)
-#error "only <libtracker-common/tracker-common.h> must be included directly."
-#endif
-
 #define TRACKER_TYPE_CONFIG	    (tracker_config_get_type ())
 #define TRACKER_CONFIG(o)	    (G_TYPE_CHECK_INSTANCE_CAST ((o), TRACKER_TYPE_CONFIG, TrackerConfig))
 #define TRACKER_CONFIG_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST ((k), TRACKER_TYPE_CONFIG, TrackerConfigClass))
@@ -98,7 +94,8 @@ void	       tracker_config_add_crawl_directory_roots		   (TrackerConfig *config,
 void	       tracker_config_add_no_watch_directory_roots	   (TrackerConfig *config,
 								    gchar * const *roots);
 void	       tracker_config_add_disabled_modules		   (TrackerConfig *config,
-								    const gchar * const *modules);void	         tracker_config_remove_watch_directory_roots         (TrackerConfig *config,
+								    const gchar * const *modules);
+void	       tracker_config_remove_watch_directory_roots         (TrackerConfig *config,
 								    const gchar   *root);
 void	       tracker_config_remove_crawl_directory_roots         (TrackerConfig *config,
 								    const gchar   *root);
@@ -118,5 +115,5 @@ void	       tracker_config_set_disabled_modules		   (TrackerConfig *config,
 
 G_END_DECLS
 
-#endif /* __LIBTRACKER_COMMON_CONFIG_H__ */
+#endif /* __TRACKER_MINER_FS_CONFIG_H__ */
 
diff --git a/src/tracker-miner-fs/tracker-crawler.c b/src/tracker-miner-fs/tracker-crawler.c
index e7be37f..1cc1be3 100644
--- a/src/tracker-miner-fs/tracker-crawler.c
+++ b/src/tracker-miner-fs/tracker-crawler.c
@@ -30,6 +30,7 @@
 #include <libtracker-common/tracker-utils.h>
 #include <libtracker-common/tracker-module-config.h>
 
+#include "tracker-config.h"
 #include "tracker-crawler.h"
 #include "tracker-dbus.h"
 #include "tracker-monitor.h"
diff --git a/src/tracker-miner-fs/tracker-main.c b/src/tracker-miner-fs/tracker-main.c
index 60ee9c0..752db4f 100644
--- a/src/tracker-miner-fs/tracker-main.c
+++ b/src/tracker-miner-fs/tracker-main.c
@@ -214,7 +214,6 @@ gint
 main (gint argc, gchar *argv[])
 {
 	TrackerConfig *config;
-	TrackerLanguage *language;
 	TrackerIndexer *indexer;
 	TrackerMiner *miner;
 	GOptionContext *context;
@@ -264,7 +263,6 @@ main (gint argc, gchar *argv[])
 
 	/* Initialize logging */
 	config = tracker_config_new ();
-	language = tracker_language_new (config);
 
 	if (verbosity > -1) {
 		tracker_config_set_verbosity (config, verbosity);
@@ -322,7 +320,7 @@ main (gint argc, gchar *argv[])
 			  NULL);
 
 	/* Set up connections to the thumbnailer if supported */
-	tracker_thumbnailer_init (config);
+	tracker_thumbnailer_init ();
 
 	if (process_all) {
 		/* Tell the indexer to process all configured modules */
@@ -347,7 +345,6 @@ main (gint argc, gchar *argv[])
 	g_object_unref (miner);
 
 	g_object_unref (config);
-	g_object_unref (language);
 
 	tracker_thumbnailer_shutdown ();
 	tracker_dbus_shutdown ();
diff --git a/src/tracker-store/tracker-config.c b/src/tracker-store/tracker-config.c
index a6fd160..fc96f4f 100644
--- a/src/tracker-store/tracker-config.c
+++ b/src/tracker-store/tracker-config.c
@@ -38,9 +38,19 @@
 #define KEY_VERBOSITY				 "Verbosity"
 #define KEY_LOW_MEMORY_MODE			 "LowMemoryMode"
 
+#define GROUP_INDEXING				 "Indexing"
+#define KEY_MIN_WORD_LENGTH			 "MinWordLength"
+#define KEY_MAX_WORD_LENGTH			 "MaxWordLength"
+
+#define GROUP_PERFORMANCE			 "Performance"
+#define KEY_MAX_WORDS_TO_INDEX			 "MaxWordsToIndex"
+
 /* Default values */
 #define DEFAULT_VERBOSITY			 0
 #define DEFAULT_LOW_MEMORY_MODE			 FALSE
+#define DEFAULT_MIN_WORD_LENGTH			 3	  /* 0->30 */
+#define DEFAULT_MAX_WORD_LENGTH			 30	  /* 0->200 */
+#define DEFAULT_MAX_WORDS_TO_INDEX		 10000
 
 typedef struct _TrackerConfigPrivate TrackerConfigPrivate;
 
@@ -53,6 +63,13 @@ struct _TrackerConfigPrivate {
 	/* General */
 	gint	      verbosity;
 	gboolean      low_memory_mode;
+
+	/* Indexing */
+	gint	      min_word_length;
+	gint	      max_word_length;
+
+	/* Performance */
+	gint	      max_words_to_index;
 };
 
 static void     config_finalize             (GObject       *object);
@@ -75,6 +92,13 @@ enum {
 	/* General */
 	PROP_VERBOSITY,
 	PROP_LOW_MEMORY_MODE,
+
+	/* Indexing */
+	PROP_MIN_WORD_LENGTH,
+	PROP_MAX_WORD_LENGTH,
+
+	/* Performance */
+	PROP_MAX_WORDS_TO_INDEX,
 };
 
 G_DEFINE_TYPE (TrackerConfig, tracker_config, G_TYPE_OBJECT);
@@ -108,6 +132,40 @@ tracker_config_class_init (TrackerConfigClass *klass)
 							       DEFAULT_LOW_MEMORY_MODE,
 							       G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
 
+	/* Indexing */
+	g_object_class_install_property (object_class,
+					 PROP_MIN_WORD_LENGTH,
+					 g_param_spec_int ("min-word-length",
+							   "Minimum word length",
+							   "Minimum word length used to index "
+							   "(0->30)",
+							   0,
+							   30,
+							   DEFAULT_MIN_WORD_LENGTH,
+							   G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+	g_object_class_install_property (object_class,
+					 PROP_MAX_WORD_LENGTH,
+					 g_param_spec_int ("max-word-length",
+							   "Maximum word length",
+							   "Maximum word length used to index",
+							   0,
+							   200, /* Is this a reasonable limit? */
+							   DEFAULT_MAX_WORD_LENGTH,
+							   G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+
+	/* Performance */
+	g_object_class_install_property (object_class,
+					 PROP_MAX_WORDS_TO_INDEX,
+					 g_param_spec_int ("max-words-to-index",
+							   "Maximum words to index",
+							   "Maximum unique words to index "
+							   "from file's content",
+							   0,
+							   G_MAXINT,
+							   DEFAULT_MAX_WORDS_TO_INDEX,
+							   G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
 	g_type_class_add_private (object_class, sizeof (TrackerConfigPrivate));
 }
 
@@ -162,6 +220,19 @@ config_get_property (GObject	*object,
 		g_value_set_boolean (value, priv->low_memory_mode);
 		break;
 
+		/* Indexing */
+	case PROP_MIN_WORD_LENGTH:
+		g_value_set_int (value, priv->min_word_length);
+		break;
+	case PROP_MAX_WORD_LENGTH:
+		g_value_set_int (value, priv->max_word_length);
+		break;
+
+		/* Performance */
+	case PROP_MAX_WORDS_TO_INDEX:
+		g_value_set_int (value, priv->max_words_to_index);
+		break;
+
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
 		break;
@@ -185,6 +256,22 @@ config_set_property (GObject	  *object,
 						    g_value_get_boolean (value));
 		break;
 
+		/* Indexing */
+	case PROP_MIN_WORD_LENGTH:
+		tracker_config_set_min_word_length (TRACKER_CONFIG (object),
+						    g_value_get_int (value));
+		break;
+	case PROP_MAX_WORD_LENGTH:
+		tracker_config_set_max_word_length (TRACKER_CONFIG (object),
+						    g_value_get_int (value));
+		break;
+
+		/* Performance */
+	case PROP_MAX_WORDS_TO_INDEX:
+		tracker_config_set_max_words_to_index (TRACKER_CONFIG (object),
+						       g_value_get_int (value));
+		break;
+
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
 		break;
@@ -235,6 +322,32 @@ config_create_with_defaults (GKeyFile *key_file,
 					" Minimizes memory use at the expense of indexing speed",
 					NULL);
 	}
+
+	/* Indexing */
+	if (overwrite || !g_key_file_has_key (key_file, GROUP_INDEXING, KEY_MIN_WORD_LENGTH, NULL)) {
+		g_key_file_set_integer (key_file, GROUP_INDEXING, KEY_MIN_WORD_LENGTH,
+					DEFAULT_MIN_WORD_LENGTH);
+		g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_MIN_WORD_LENGTH,
+					" Set the minimum length of words to index (0->30, default=3)",
+					NULL);
+	}
+
+	if (overwrite || !g_key_file_has_key (key_file, GROUP_INDEXING, KEY_MAX_WORD_LENGTH, NULL)) {
+		g_key_file_set_integer (key_file, GROUP_INDEXING, KEY_MAX_WORD_LENGTH,
+					DEFAULT_MAX_WORD_LENGTH);
+		g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_MAX_WORD_LENGTH,
+					" Set the maximum length of words to index (0->200, default=30)",
+					NULL);
+	}
+
+	/* Performance */
+	if (overwrite || !g_key_file_has_key (key_file, GROUP_PERFORMANCE, KEY_MAX_WORDS_TO_INDEX, NULL)) {
+		g_key_file_set_integer (key_file, GROUP_PERFORMANCE, KEY_MAX_WORDS_TO_INDEX,
+					DEFAULT_MAX_WORDS_TO_INDEX);
+		g_key_file_set_comment (key_file, GROUP_PERFORMANCE, KEY_MAX_WORDS_TO_INDEX,
+					" Maximum unique words to index from a file's content",
+					NULL);
+	}
 }
 
 static gboolean
@@ -474,6 +587,13 @@ config_load (TrackerConfig *config)
 	/* General */
 	config_load_int (config, "verbosity", priv->key_file, GROUP_GENERAL, KEY_VERBOSITY);
 	config_load_boolean (config, "low-memory-mode", priv->key_file, GROUP_GENERAL, KEY_LOW_MEMORY_MODE);
+
+	/* Indexing */
+	config_load_int (config, "min-word-length", priv->key_file, GROUP_INDEXING, KEY_MIN_WORD_LENGTH);
+	config_load_int (config, "max-word-length", priv->key_file, GROUP_INDEXING, KEY_MAX_WORD_LENGTH);
+
+	/* Performance */
+	config_load_int (config, "max-words-to-index", priv->key_file, GROUP_PERFORMANCE, KEY_MAX_WORDS_TO_INDEX);
 }
 
 static gboolean
@@ -499,6 +619,13 @@ config_save (TrackerConfig *config)
 	config_save_int (config, "verbosity", priv->key_file, GROUP_GENERAL, KEY_VERBOSITY);
 	config_save_boolean (config, "low-memory-mode", priv->key_file, GROUP_GENERAL, KEY_LOW_MEMORY_MODE);
 
+	/* Indexing */
+	config_save_int (config, "min-word-length", priv->key_file, GROUP_INDEXING, KEY_MIN_WORD_LENGTH);
+	config_save_int (config, "max-word-length", priv->key_file, GROUP_INDEXING, KEY_MAX_WORD_LENGTH);
+
+	/* Performance */
+	config_save_int (config, "max-words-to-index", priv->key_file, GROUP_PERFORMANCE, KEY_MAX_WORDS_TO_INDEX);
+
 	g_message ("Saving config to disk...");
 
 	/* Do the actual saving to disk now */
@@ -637,6 +764,43 @@ tracker_config_get_low_memory_mode (TrackerConfig *config)
 	return priv->low_memory_mode;
 }
 
+
+gint
+tracker_config_get_min_word_length (TrackerConfig *config)
+{
+	TrackerConfigPrivate *priv;
+
+	g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_MIN_WORD_LENGTH);
+
+	priv = TRACKER_CONFIG_GET_PRIVATE (config);
+
+	return priv->min_word_length;
+}
+
+gint
+tracker_config_get_max_word_length (TrackerConfig *config)
+{
+	TrackerConfigPrivate *priv;
+
+	g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_MAX_WORD_LENGTH);
+
+	priv = TRACKER_CONFIG_GET_PRIVATE (config);
+
+	return priv->max_word_length;
+}
+
+gint
+tracker_config_get_max_words_to_index (TrackerConfig *config)
+{
+	TrackerConfigPrivate *priv;
+
+	g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_MAX_WORDS_TO_INDEX);
+
+	priv = TRACKER_CONFIG_GET_PRIVATE (config);
+
+	return priv->max_words_to_index;
+}
+
 void
 tracker_config_set_verbosity (TrackerConfig *config,
 			      gint	     value)
@@ -668,3 +832,57 @@ tracker_config_set_low_memory_mode (TrackerConfig *config,
 	priv->low_memory_mode = value;
 	g_object_notify (G_OBJECT (config), "low-memory-mode");
 }
+
+void
+tracker_config_set_min_word_length (TrackerConfig *config,
+				    gint	   value)
+{
+	TrackerConfigPrivate *priv;
+
+	g_return_if_fail (TRACKER_IS_CONFIG (config));
+
+	if (!config_int_validate (config, "min-word-length", value)) {
+		return;
+	}
+
+	priv = TRACKER_CONFIG_GET_PRIVATE (config);
+
+	priv->min_word_length = value;
+	g_object_notify (G_OBJECT (config), "min-word-length");
+}
+
+void
+tracker_config_set_max_word_length (TrackerConfig *config,
+				    gint	   value)
+{
+	TrackerConfigPrivate *priv;
+
+	g_return_if_fail (TRACKER_IS_CONFIG (config));
+
+	if (!config_int_validate (config, "max-word-length", value)) {
+		return;
+	}
+
+	priv = TRACKER_CONFIG_GET_PRIVATE (config);
+
+	priv->max_word_length = value;
+	g_object_notify (G_OBJECT (config), "max-word-length");
+}
+
+void
+tracker_config_set_max_words_to_index (TrackerConfig *config,
+				       gint	      value)
+{
+	TrackerConfigPrivate *priv;
+
+	g_return_if_fail (TRACKER_IS_CONFIG (config));
+
+	if (!config_int_validate (config, "max-words-to-index", value)) {
+		return;
+	}
+
+	priv = TRACKER_CONFIG_GET_PRIVATE (config);
+
+	priv->max_words_to_index = value;
+	g_object_notify (G_OBJECT (config), "max-words-to-index");
+}
diff --git a/src/tracker-store/tracker-config.h b/src/tracker-store/tracker-config.h
index 5d94a02..7ce6e90 100644
--- a/src/tracker-store/tracker-config.h
+++ b/src/tracker-store/tracker-config.h
@@ -1,7 +1,5 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc gnome org)
- * Copyright (C) 2007, Michal Pryc (Michal Pryc Sun Com)
  * Copyright (C) 2008, Nokia (urho konttori nokia com)
  *
  * This library is free software; you can redistribute it and/or
@@ -20,17 +18,13 @@
  * Boston, MA  02110-1301, USA.
  */
 
-#ifndef __LIBTRACKER_COMMON_CONFIG_H__
-#define __LIBTRACKER_COMMON_CONFIG_H__
+#ifndef __TRACKER_STORE_CONFIG_H__
+#define __TRACKER_STORE_CONFIG_H__
 
 #include <glib-object.h>
 
 G_BEGIN_DECLS
 
-#if !defined (__LIBTRACKER_COMMON_INSIDE__) && !defined (TRACKER_COMPILATION)
-#error "only <libtracker-common/tracker-common.h> must be included directly."
-#endif
-
 #define TRACKER_TYPE_CONFIG	    (tracker_config_get_type ())
 #define TRACKER_CONFIG(o)	    (G_TYPE_CHECK_INSTANCE_CAST ((o), TRACKER_TYPE_CONFIG, TrackerConfig))
 #define TRACKER_CONFIG_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST ((k), TRACKER_TYPE_CONFIG, TrackerConfigClass))
@@ -49,19 +43,28 @@ struct _TrackerConfigClass {
 	GObjectClass parent_class;
 };
 
-GType	       tracker_config_get_type            (void) G_GNUC_CONST;
+GType	       tracker_config_get_type               (void) G_GNUC_CONST;
 
-TrackerConfig *tracker_config_new                 (void);
-gboolean       tracker_config_save                (TrackerConfig *config);
-gint           tracker_config_get_verbosity       (TrackerConfig *config);
-gboolean       tracker_config_get_low_memory_mode (TrackerConfig *config);
-void           tracker_config_set_verbosity       (TrackerConfig *config,
-						   gint           value);
-void           tracker_config_set_low_memory_mode (TrackerConfig *config,
-						   gboolean       value);
+TrackerConfig *tracker_config_new                    (void);
+gboolean       tracker_config_save                   (TrackerConfig *config);
+gint           tracker_config_get_verbosity          (TrackerConfig *config);
+gboolean       tracker_config_get_low_memory_mode    (TrackerConfig *config);
+gint           tracker_config_get_min_word_length    (TrackerConfig *config);
+gint           tracker_config_get_max_word_length    (TrackerConfig *config);
+gint           tracker_config_get_max_words_to_index (TrackerConfig *config);
 
+void           tracker_config_set_verbosity          (TrackerConfig *config,
+						      gint           value);
+void           tracker_config_set_low_memory_mode    (TrackerConfig *config,
+						      gboolean       value);
+void           tracker_config_set_min_word_length    (TrackerConfig *config,
+						      gint           value);
+void           tracker_config_set_max_word_length    (TrackerConfig *config,
+						      gint           value);
+void           tracker_config_set_max_words_to_index (TrackerConfig *config,
+						      gint           value);
 
 G_END_DECLS
 
-#endif /* __LIBTRACKER_COMMON_CONFIG_H__ */
+#endif /* __TRACKER_STORE_CONFIG_H__ */
 
diff --git a/src/tracker-store/tracker-main.c b/src/tracker-store/tracker-main.c
index 8d5e1f8..8ee2b40 100644
--- a/src/tracker-store/tracker-main.c
+++ b/src/tracker-store/tracker-main.c
@@ -46,7 +46,6 @@
 #include <libtracker-common/tracker-power.h>
 #include <libtracker-common/tracker-storage.h>
 #include <libtracker-common/tracker-ioprio.h>
-#include <libtracker-common/tracker-language.h>
 #include <libtracker-common/tracker-log.h>
 #include <libtracker-common/tracker-module-config.h>
 #include <libtracker-common/tracker-ontology.h>
@@ -519,7 +518,7 @@ backup_user_metadata (TrackerConfig   *config,
 	 *  Init the DB stack to get the user metadata
 	 */
 
-	tracker_data_manager_init (config, language, 0, NULL, &is_first_time_index);
+	tracker_data_manager_init (0, NULL, &is_first_time_index);
 	
 	/*
 	 * If some database is missing or the dbs dont exists, we dont need
@@ -640,7 +639,6 @@ main (gint argc, gchar *argv[])
 	GError			   *error = NULL;
 	TrackerMainPrivate	   *private;
 	TrackerConfig		   *config;
-	TrackerLanguage		   *language;
 	TrackerPower		   *hal_power;
 	TrackerStorage		   *hal_storage;
 	TrackerDBManagerFlags	    flags = 0;
@@ -711,7 +709,6 @@ main (gint argc, gchar *argv[])
 
 	/* Initialize major subsystems */
 	config = tracker_config_new ();
-	language = tracker_language_new (config);
 
 	/* Daemon command line arguments */
 	if (verbosity > -1) {
@@ -749,7 +746,7 @@ main (gint argc, gchar *argv[])
 
 	tracker_store_init ();
 	tracker_turtle_init ();
-	tracker_thumbnailer_init (config);
+	tracker_thumbnailer_init ();
 
 	flags |= TRACKER_DB_MANAGER_REMOVE_CACHE;
 
@@ -764,7 +761,7 @@ main (gint argc, gchar *argv[])
 		flags |= TRACKER_DB_MANAGER_LOW_MEMORY_MODE;
 	}
 
-	if (!tracker_data_manager_init (config, language, flags, NULL, &is_first_time_index)) {
+	if (!tracker_data_manager_init (flags, NULL, &is_first_time_index)) {
 		return EXIT_FAILURE;
 	}
 
@@ -789,7 +786,7 @@ main (gint argc, gchar *argv[])
 	}
 
 	tracker_events_init (tracker_daemon_get_notifiable_classes);
-	tracker_push_init (config);
+	tracker_push_init ();
 
 	g_message ("Waiting for DBus requests...");
 
@@ -839,7 +836,6 @@ shutdown:
 	g_object_unref (hal_storage);
 #endif /* HAVE_HAL */
 
-	g_object_unref (language);
 	g_object_unref (config);
 
 	shutdown_locations ();
diff --git a/src/tracker-store/tracker-push.c b/src/tracker-store/tracker-push.c
index a7e90f4..ce02c05 100644
--- a/src/tracker-store/tracker-push.c
+++ b/src/tracker-store/tracker-push.c
@@ -28,12 +28,12 @@
 
 #include <dbus/dbus-glib-lowlevel.h>
 
+#include <libtracker-common/tracker-utils.h>
+
 #include "tracker-push.h"
 #include "tracker-push-registrar.h"
 
-
 typedef struct {
-	TrackerConfig *config;
 	DBusGConnection *connection;
 	DBusGProxy *dbus_proxy;
 	GList *modules;
@@ -233,13 +233,11 @@ free_private (PushSupportPrivate *private)
 {
 	if (private->connection)
 		dbus_g_connection_unref (private->connection);
-	if (private->config)
-		g_object_unref (private->config);
 	g_free (private);
 }
 
 void
-tracker_push_init (TrackerConfig *config)
+tracker_push_init (void)
 {
 	DBusGConnection *connection;
 	GError *error = NULL;
@@ -259,7 +257,6 @@ tracker_push_init (TrackerConfig *config)
 		GList *copy;
 		DBusError dbus_error;
 
-		private->config = g_object_ref (config);
 		private->connection = dbus_g_connection_ref (connection);
 
 		private->dbus_proxy = dbus_g_proxy_new_for_name (private->connection, 
diff --git a/src/tracker-store/tracker-push.h b/src/tracker-store/tracker-push.h
index 0c95b8a..6d607ea 100644
--- a/src/tracker-store/tracker-push.h
+++ b/src/tracker-store/tracker-push.h
@@ -33,11 +33,9 @@
 #include <glib-object.h>
 #include <dbus/dbus-glib-bindings.h>
 
-#include <libtracker-common/tracker-common.h>
-
 G_BEGIN_DECLS
 
-void tracker_push_init     (TrackerConfig *config);
+void tracker_push_init     (void);
 void tracker_push_shutdown (void);
 
 G_END_DECLS
diff --git a/tests/libtracker-common/tracker-thumbnailer-test.c b/tests/libtracker-common/tracker-thumbnailer-test.c
index af66446..583228d 100644
--- a/tests/libtracker-common/tracker-thumbnailer-test.c
+++ b/tests/libtracker-common/tracker-thumbnailer-test.c
@@ -18,13 +18,14 @@
  * Boston, MA  02110-1301, USA.
  */
 #include "config.h"
-#include <glib.h>
+
 #include <stdlib.h>
 
+#include <glib-object.h>
+
 #include <libtracker-common/tracker-thumbnailer.h>
 
 static const gchar *old_xdg_config = NULL;
-static TrackerConfig *cosmic_config = NULL;
 
 static void
 set_config_directory ()
@@ -45,22 +46,22 @@ test_init_shutdown ()
 
         tracker_thumbnailer_shutdown ();
 
-        tracker_thumbnailer_init (cosmic_config);
+        tracker_thumbnailer_init ();
         tracker_thumbnailer_shutdown ();
 
-        tracker_thumbnailer_init (cosmic_config);
+        tracker_thumbnailer_init ();
         tracker_thumbnailer_shutdown ();
 
         tracker_thumbnailer_shutdown ();
-        tracker_thumbnailer_init (cosmic_config);
-        tracker_thumbnailer_init (cosmic_config);
+        tracker_thumbnailer_init ();
+        tracker_thumbnailer_init ();
         tracker_thumbnailer_shutdown ();
 }
 
 static void
 test_queue_file ()
 {
-        tracker_thumbnailer_init (cosmic_config);
+        tracker_thumbnailer_init ();
 
         /* URI with supported mimetype */
         if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) {
@@ -93,7 +94,7 @@ test_queue_send ()
 {
         gint i;
         
-        tracker_thumbnailer_init (cosmic_config);
+        tracker_thumbnailer_init ();
         
         for (i = 0; i < 10; i++) {
                 gchar *filename = g_strdup_printf ("file:///a/b/c%d.jpeg", i);
@@ -112,7 +113,7 @@ test_queue_send ()
 static void
 test_move ()
 {
-        tracker_thumbnailer_init (cosmic_config);
+        tracker_thumbnailer_init ();
         
         if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) {
                 tracker_thumbnailer_move ("file:///a/b/c1.jpeg", "image/jpeg",
@@ -126,7 +127,7 @@ test_move ()
 static void
 test_remove ()
 {
-        tracker_thumbnailer_init (cosmic_config);
+        tracker_thumbnailer_init ();
         
         if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) {
                 tracker_thumbnailer_remove ("file:///a/b/c1.jpeg", "image/jpeg");
@@ -140,7 +141,7 @@ test_remove ()
 static void
 test_cleanup ()
 {
-        tracker_thumbnailer_init (cosmic_config);
+        tracker_thumbnailer_init ();
         
         if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) {
                 tracker_thumbnailer_cleanup ("file:///a/b/c1.jpeg");
@@ -160,10 +161,6 @@ main (gint argc, gchar **argv)
 	g_test_init (&argc, &argv, NULL);
 
         set_config_directory ();
-        cosmic_config = tracker_config_new ();
-        /* True is the default value, but makes sure! */
-        tracker_config_set_enable_thumbnails (cosmic_config, TRUE);
-        
         
         g_test_add_func ("/libtracker-common/tracker-thumbnailer/init_shutdown",
                          test_init_shutdown);
diff --git a/tests/libtracker-data/tracker-ontology-test.c b/tests/libtracker-data/tracker-ontology-test.c
index 87f3f78..30ab95d 100644
--- a/tests/libtracker-data/tracker-ontology-test.c
+++ b/tests/libtracker-data/tracker-ontology-test.c
@@ -89,8 +89,6 @@ test_query (gconstpointer test_data)
 	gchar       *data_filename;
 	gchar       *query, *query_filename;
 	gchar       *results, *results_filename;
-	TrackerConfig   *config;
-	TrackerLanguage	*language;
 	TrackerDBResultSet *result_set;
 	const TestInfo *test_info;
 	GString *test_results;
@@ -99,17 +97,10 @@ test_query (gconstpointer test_data)
 	test_info = test_data;
 
 	/* initialization */
-
-	config = tracker_config_new ();
-	language = tracker_language_new (config);
-
-	tracker_data_manager_init (config, language,
-	                           TRACKER_DB_MANAGER_FORCE_REINDEX
-	                           | TRACKER_DB_MANAGER_TEST_MODE,
+	tracker_data_manager_init (TRACKER_DB_MANAGER_FORCE_REINDEX | TRACKER_DB_MANAGER_TEST_MODE,
 	                           NULL, NULL);
 
 	/* load data set */
-
 	data_filename = g_strconcat (test_info->data, ".ttl", NULL);
 	tracker_data_begin_transaction ();
 	tracker_turtle_process (data_filename, NULL, consume_triple_storer, NULL);
diff --git a/tests/libtracker-data/tracker-sparql-test.c b/tests/libtracker-data/tracker-sparql-test.c
index b31b996..6006fbb 100644
--- a/tests/libtracker-data/tracker-sparql-test.c
+++ b/tests/libtracker-data/tracker-sparql-test.c
@@ -76,8 +76,6 @@ test_sparql_query (gconstpointer test_data)
 	gchar       *data_filename;
 	gchar       *query, *query_filename;
 	gchar       *results, *results_filename;
-	TrackerConfig   *config;
-	TrackerLanguage	*language;
 	TrackerDBResultSet *result_set;
 	const TestInfo *test_info;
 	GString *test_results;
@@ -86,17 +84,11 @@ test_sparql_query (gconstpointer test_data)
 	test_info = test_data;
 
 	/* initialization */
-
-	config = tracker_config_new ();
-	language = tracker_language_new (config);
-
-	tracker_data_manager_init (config, language,
-	                           TRACKER_DB_MANAGER_FORCE_REINDEX
-	                           | TRACKER_DB_MANAGER_TEST_MODE,
-	                           test_info->data, NULL);
+	tracker_data_manager_init (TRACKER_DB_MANAGER_FORCE_REINDEX | TRACKER_DB_MANAGER_TEST_MODE,
+	                           test_info->data, 
+				   NULL);
 
 	/* load data set */
-
 	data_filename = g_strconcat (test_info->data, ".ttl", NULL);
 	tracker_data_begin_transaction ();
 	tracker_turtle_process (data_filename, NULL, consume_triple_storer, NULL);
diff --git a/tests/tracker-miner-fs/Makefile.am b/tests/tracker-miner-fs/Makefile.am
index a5193b1..16ba1b7 100644
--- a/tests/tracker-miner-fs/Makefile.am
+++ b/tests/tracker-miner-fs/Makefile.am
@@ -29,6 +29,7 @@ INCLUDES = 									\
 tracker_metadata_utils_SOURCES = 						\
 	$(top_srcdir)/src/tracker-store/tracker-events.c			\
 	$(top_srcdir)/src/tracker-miner-fs/tracker-dbus.c			\
+	$(top_srcdir)/src/tracker-miner-fs/tracker-config.c			\
 	$(top_srcdir)/src/tracker-miner-fs/tracker-crawler.c			\
 	$(top_srcdir)/src/tracker-miner-fs/tracker-indexer.c			\
 	$(top_srcdir)/src/tracker-miner-fs/tracker-indexer-module.c		\



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