tracker r1469 - in branches/indexer-split: . src/libtracker-common src/libtracker-db src/trackerd



Author: mr
Date: Fri May 23 08:28:45 2008
New Revision: 1469
URL: http://svn.gnome.org/viewvc/tracker?rev=1469&view=rev

Log:
	* src/libtracker-common/tracker-nfs-lock.[ch]: 
	* src/libtracker-db/Makefile.am:
	* src/trackerd/tracker-cache.c:
	* src/trackerd/tracker-db-manager.c:
	* src/trackerd/tracker-db-sqlite.c: 
	* src/trackerd/tracker-db.c:
	* src/trackerd/tracker-email-utils.c:
	* src/trackerd/tracker-hal.c:
	* src/trackerd/tracker-indexer.c:
	* src/trackerd/tracker-main.[ch]:
	* src/trackerd/tracker-metadata.c:
	* src/trackerd/tracker-utils.c:
	* src/trackerd/tracker-xesam.[ch]: Added 2 API calls,
	tracker_get_sys_tmp_dir() and tracker_get_data_dir() for other
	modules to request when they need it. Other directory information
	is calculated when and where it is needed. All directory
	information in the tracker struct has been removed now in favour
	of this.


Modified:
   branches/indexer-split/ChangeLog
   branches/indexer-split/src/libtracker-common/tracker-nfs-lock.c
   branches/indexer-split/src/libtracker-common/tracker-nfs-lock.h
   branches/indexer-split/src/libtracker-db/Makefile.am
   branches/indexer-split/src/trackerd/tracker-cache.c
   branches/indexer-split/src/trackerd/tracker-db-manager.c
   branches/indexer-split/src/trackerd/tracker-db-sqlite.c
   branches/indexer-split/src/trackerd/tracker-db.c
   branches/indexer-split/src/trackerd/tracker-email-utils.c
   branches/indexer-split/src/trackerd/tracker-hal.c
   branches/indexer-split/src/trackerd/tracker-indexer.c
   branches/indexer-split/src/trackerd/tracker-main.c
   branches/indexer-split/src/trackerd/tracker-main.h
   branches/indexer-split/src/trackerd/tracker-metadata.c
   branches/indexer-split/src/trackerd/tracker-utils.c
   branches/indexer-split/src/trackerd/tracker-xesam.c
   branches/indexer-split/src/trackerd/tracker-xesam.h

Modified: branches/indexer-split/src/libtracker-common/tracker-nfs-lock.c
==============================================================================
--- branches/indexer-split/src/libtracker-common/tracker-nfs-lock.c	(original)
+++ branches/indexer-split/src/libtracker-common/tracker-nfs-lock.c	Fri May 23 08:28:45 2008
@@ -28,18 +28,18 @@
 #include "tracker-nfs-lock.h"
 #include "tracker-log.h"
 
-static gchar *lock_file = NULL;
-static gchar *tmp_filepath = NULL;
+static gchar *lock_filename;
+static gchar *tmp_dir;
 
-static gboolean use_nfs_safe_locking = FALSE;
+static gboolean use_nfs_safe_locking;
 
 /* Get no of links to a file - used for safe NFS atomic file locking */
 static gint
-get_nlinks (const gchar *name)
+get_nlinks (const gchar *filename)
 {
 	struct stat st;
 
-	if (g_stat (name, &st) == 0) {
+	if (g_stat (filename, &st) == 0) {
 		return st.st_nlink;
 	} else {
 		return -1;
@@ -47,11 +47,11 @@
 }
 
 static gint
-get_mtime (const gchar *name)
+get_mtime (const gchar *filename)
 {
 	struct stat st;
 
-	if (g_stat (name, &st) == 0) {
+	if (g_stat (filename, &st) == 0) {
 		return st.st_mtime;
 	} else {
 		return -1;
@@ -61,7 +61,7 @@
 static gboolean
 is_initialized (void) 
 {
-        return lock_file != NULL && tmp_filepath != NULL;
+        return lock_filename != NULL || tmp_dir != NULL;
 }
 
 /* Serialises db access via a lock file for safe use on (lock broken)
@@ -70,8 +70,8 @@
 gboolean
 tracker_nfs_lock_obtain (void)
 {
+	gchar *filename;
 	gint   attempt;
-	gchar *tmp_file;
         gint   fd;
 
 	if (!use_nfs_safe_locking) {
@@ -83,22 +83,22 @@
                 return FALSE;
         }
  
-	tmp_file = g_strdup_printf ("%s_%d.lock", 
-                                    tmp_filepath, 
+	filename = g_strdup_printf ("%s_%d.lock", 
+                                    tmp_dir, 
                                     (guint32) getpid ());
 
 	for (attempt = 0; attempt < 10000; ++attempt) {
 		/* Delete existing lock file if older than 5 mins */
-		if (g_file_test (lock_file, G_FILE_TEST_EXISTS) 
-                    && ( time((time_t *) NULL) - get_mtime (lock_file)) > 300) {
-			g_unlink (lock_file);
+		if (g_file_test (lock_filename, G_FILE_TEST_EXISTS) &&
+                    time ((time_t *) - get_mtime (lock_filename)) > 300) {
+			g_unlink (lock_filename);
 		}
 
-		fd = g_open (lock_file, O_CREAT|O_EXCL, 0644);
+		fd = g_open (lock_filename, O_CREAT | O_EXCL, 0644);
 
 		if (fd >= 0) {
 			/* Create host specific file and link to lock file */
-                        if (link (lock_file, tmp_file) == -1) {
+                        if (link (lock_filename, filename) == -1) {
                                 goto error;
                         }
 
@@ -106,9 +106,9 @@
 			 * if file locked. If greater than 2 then we
 			 * have a race condition.
 			 */
-			if (get_nlinks (lock_file) == 2) {
+			if (get_nlinks (lock_filename) == 2) {
 				close (fd);
-				g_free (tmp_file);
+				g_free (filename);
 
 				return TRUE;
 			} else {
@@ -120,7 +120,7 @@
 
 error:
 	g_critical ("Could not get NFS lock state");
-	g_free (tmp_file);
+	g_free (filename);
 
 	return FALSE;
 }
@@ -128,7 +128,7 @@
 void
 tracker_nfs_lock_release (void)
 {
-	gchar *tmp_file;
+	gchar *filename;
 
 	if (!use_nfs_safe_locking) {
 		return;
@@ -139,16 +139,18 @@
                 return;
         }
  
-	tmp_file = g_strdup_printf ("%s_%d.lock", tmp_filepath, (guint32) getpid ());
+	filename = g_strdup_printf ("%s_%d.lock", 
+				    tmp_dir, 
+				    (guint32) getpid ());
+	
+	g_unlink (filename);
+	g_unlink (lock_filename);
 
-	g_unlink (tmp_file);
-	g_unlink (lock_file);
-
-	g_free (tmp_file);
+	g_free (filename);
 }
 
 void 
-tracker_nfs_lock_init (const gchar *root_dir, gboolean nfs)
+tracker_nfs_lock_init (gboolean nfs)
 {
         if (is_initialized ()) {
 		return;
@@ -156,12 +158,18 @@
 
 	use_nfs_safe_locking = nfs;
 
-        if (lock_file == NULL) {
-                lock_file = g_build_filename (root_dir, "tracker.lock", NULL);
+        if (lock_filename == NULL) {
+                lock_filename = g_build_filename (g_get_user_data_dir (), 
+						  "tracker", 
+						  "tracker.lock", 
+						  NULL);
         }
 
-        if (tmp_filepath == NULL) {
-                tmp_filepath = g_build_filename (root_dir, g_get_host_name (), NULL);
+        if (tmp_dir == NULL) {
+                tmp_dir = g_build_filename (g_get_user_data_dir (), 
+					    "tracker",
+					    g_get_host_name (), 
+					    NULL);
         }
 
         g_message ("NFS lock initialised %s", 
@@ -175,12 +183,14 @@
 		return;
         }
 
-        if (lock_file) {
-                g_free (lock_file);
+        if (lock_filename) {
+                g_free (lock_filename);
+		lock_filename = NULL;
         }
 
-        if (tmp_filepath) {
-                g_free (tmp_filepath);
+        if (tmp_dir) {
+                g_free (tmp_dir);
+		tmp_dir = NULL;
         }
 
         g_message ("NFS lock finalised");

Modified: branches/indexer-split/src/libtracker-common/tracker-nfs-lock.h
==============================================================================
--- branches/indexer-split/src/libtracker-common/tracker-nfs-lock.h	(original)
+++ branches/indexer-split/src/libtracker-common/tracker-nfs-lock.h	Fri May 23 08:28:45 2008
@@ -26,7 +26,7 @@
 
 G_BEGIN_DECLS
 
-void     tracker_nfs_lock_init     (const gchar *root_dir, gboolean nfs);
+void     tracker_nfs_lock_init     (gboolean nfs);
 void     tracker_nfs_lock_shutdown (void);
 gboolean tracker_nfs_lock_obtain   (void);
 void     tracker_nfs_lock_release  (void);

Modified: branches/indexer-split/src/libtracker-db/Makefile.am
==============================================================================
--- branches/indexer-split/src/libtracker-db/Makefile.am	(original)
+++ branches/indexer-split/src/libtracker-db/Makefile.am	Fri May 23 08:28:45 2008
@@ -1,9 +1,6 @@
 INCLUDES =								\
 	-g						 		\
 	$(GLIB2_CFLAGS)							\
-	$(GMIME_CFLAGS)							\
-	$(SQLITE3_CFLAGS)						\
-	$(QDBM_CFLAGS)							\
 	-DG_LOG_DOMAIN=\"Tracker\"					\
 	-I$(top_srcdir)/src
 

Modified: branches/indexer-split/src/trackerd/tracker-cache.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-cache.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-cache.c	Fri May 23 08:28:45 2008
@@ -32,6 +32,7 @@
 #include "tracker-dbus.h"
 #include "tracker-dbus-daemon.h"
 #include "tracker-cache.h"
+#include "tracker-main.h"
 #include "tracker-status.h"
 
 #define USE_SLICE
@@ -58,23 +59,26 @@
 	gint     i;
 
 	for (i = 1; i < 1000; i++) {
-		temp_file_name = g_strdup_printf ("%s%d", name, i);
+		gchar    *filename;
+		gboolean  exists;
 
-		char *tmp = g_build_filename (tracker->data_dir, temp_file_name, NULL);	
+		temp_file_name = g_strdup_printf ("%s%d", name, i);
+		filename = g_build_filename (tracker_get_data_dir (), 
+					     temp_file_name, 
+					     NULL);	
+		
+		exists = g_file_test (filename, G_FILE_TEST_EXISTS);
+		g_free (filename);
 
-		if (g_file_test (tmp , G_FILE_TEST_EXISTS)) {
+		if (exists) {
 			g_free (temp_file_name);
-			g_free (tmp);
 			continue;
 		}
 
-		g_free (tmp);
-
 		break;
 	}
 
 	indexer = tracker_indexer_open (temp_file_name, FALSE);
-
 	g_free (temp_file_name);
 
 	return indexer;

Modified: branches/indexer-split/src/trackerd/tracker-db-manager.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-db-manager.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-db-manager.c	Fri May 23 08:28:45 2008
@@ -173,13 +173,17 @@
 void
 tracker_db_manager_init (const gchar *data_dir, 
                          const gchar *user_data_dir,
-                         const gchar *sys_tmp_root_dir) 
+                         const gchar *sys_tmp_dir) 
 {
+        g_return_if_fail (data_dir != NULL);
+        g_return_if_fail (user_data_dir != NULL);
+        g_return_if_fail (sys_tmp_dir != NULL);
+
         if (!initialized) {
                 configure_directories ();
                 configure_database_description (data_dir, 
                                                 user_data_dir, 
-                                                sys_tmp_root_dir);
+                                                sys_tmp_dir);
                 initialized = TRUE;
         }
 }

Modified: branches/indexer-split/src/trackerd/tracker-db-sqlite.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-db-sqlite.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-db-sqlite.c	Fri May 23 08:28:45 2008
@@ -42,6 +42,7 @@
 #include "tracker-indexer.h"
 #include "tracker-cache.h"
 #include "tracker-metadata.h"
+#include "tracker-main.h"
 #include "tracker-utils.h"
 #include "tracker-watch.h"
 #include "tracker-ontology.h"
@@ -1550,7 +1551,7 @@
 tracker_db_needs_setup (void)
 {
 	return (!tracker_db_manager_file_exists (TRACKER_DB_FILE_META) ||
-		!file_exists (tracker->data_dir, TRACKER_INDEXER_FILE_INDEX_DB_FILENAME) ||
+		!file_exists (tracker_get_data_dir (), TRACKER_INDEXER_FILE_INDEX_DB_FILENAME) ||
 		!tracker_db_manager_file_exists (TRACKER_DB_FILE_CONTENTS));
 }
 

Modified: branches/indexer-split/src/trackerd/tracker-db.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-db.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-db.c	Fri May 23 08:28:45 2008
@@ -956,7 +956,7 @@
 			tracker_db_save_file_contents (db_con, index_table, old_table, file_as_text, info);
 					
 			/* clear up if text contents are in a temp file */
-			if (g_str_has_prefix (file_as_text, tracker->sys_tmp_root_dir)) {
+			if (g_str_has_prefix (file_as_text, tracker_get_sys_tmp_dir ())) {
 				g_unlink (file_as_text);
 			}
 

Modified: branches/indexer-split/src/trackerd/tracker-email-utils.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-email-utils.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-email-utils.c	Fri May 23 08:28:45 2008
@@ -787,16 +787,21 @@
 gchar *
 email_make_tmp_name_for_mail_attachment (const gchar *filename)
 {
+        gchar *email_attachments_dir;
         gchar *str_uint, *tmp_filename, *tmp_name;
 
         g_return_val_if_fail (filename, NULL);
-        g_return_val_if_fail (tracker->email_attachments_dir, NULL);
+
+        email_attachments_dir = g_build_filename (tracker_get_sys_tmp_dir (), 
+                                                  "Attachments", 
+                                                  NULL);
 
         str_uint = tracker_uint_to_string (g_random_int ());
         tmp_filename = g_strconcat (str_uint, "-", filename, NULL);
         g_free (str_uint);
-        tmp_name = g_build_filename (tracker->email_attachments_dir, tmp_filename, NULL);
+        tmp_name = g_build_filename (email_attachments_dir, tmp_filename, NULL);
         g_free (tmp_filename);
+        g_free (email_attachments_dir);
 
         return tmp_name;
 }
@@ -1074,7 +1079,7 @@
 			return;
 
 		} else {
-                        /* Decodes email attachment and stores it in tracker->email_attachements_dir
+                        /* Decodes email attachment and stores it in email_attachments_dir
                            to index it latter.
                         */
 

Modified: branches/indexer-split/src/trackerd/tracker-hal.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-hal.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-hal.c	Fri May 23 08:28:45 2008
@@ -231,14 +231,24 @@
 
 	priv = GET_PRIV (object);
 
-        g_hash_table_destroy (priv->removable_devices);
-        g_hash_table_destroy (priv->mounted_devices);
-        g_hash_table_destroy (priv->all_devices);
+	if (priv->removable_devices) {
+		g_hash_table_unref (priv->removable_devices);
+	}
+
+	if (priv->mounted_devices) {
+		g_hash_table_unref (priv->mounted_devices);
+	}
+
+	if (priv->all_devices) {
+		g_hash_table_unref (priv->all_devices);
+	}
 
         g_free (priv->battery_udi);
 
-        libhal_ctx_set_user_data (priv->context, NULL);
-        libhal_ctx_free (priv->context);
+	if (priv->context) {
+		libhal_ctx_set_user_data (priv->context, NULL);
+		libhal_ctx_free (priv->context);
+	}
 
 	(G_OBJECT_CLASS (tracker_hal_parent_class)->finalize) (object);
 }

Modified: branches/indexer-split/src/trackerd/tracker-indexer.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-indexer.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-indexer.c	Fri May 23 08:28:45 2008
@@ -61,6 +61,7 @@
 #include "tracker-hal.h"
 #include "tracker-process-files.h"
 #include "tracker-query-tree.h"
+#include "tracker-main.h"
 #include "tracker-ontology.h"
 #include "tracker-status.h"
 #include "tracker-db-manager.h"
@@ -144,10 +145,13 @@
 gboolean
 tracker_indexer_repair (const char *name)
 {
-	gboolean result = TRUE;
-	char *index_name = g_build_filename (tracker->data_dir, name, NULL);
+	gchar    *index_name;
+	gboolean  result = TRUE;
 
-	result =  dprepair (index_name);
+        index_name = g_build_filename (tracker_get_data_dir (), 
+                                       name, 
+                                       NULL);
+	result = dprepair (index_name);
 	g_free (index_name);
 
 	return result;
@@ -189,11 +193,7 @@
 static inline char *
 get_index_file (const char *name)
 {
-	char *word_dir;
-
-	word_dir = g_build_filename (tracker->data_dir, name, NULL);
-
-	return word_dir;
+	return g_build_filename (tracker_get_data_dir (), name, NULL);
 }
 
 Indexer *
@@ -264,8 +264,11 @@
 	
 
 	if (remove_file) {
+                gchar *dbname;
 
-		char *dbname = g_build_filename (tracker->data_dir, indexer->name, NULL);
+                dbname = g_build_filename (tracker_get_data_dir (), 
+                                           indexer->name, 
+                                           NULL);
 
 		g_return_if_fail (indexer);
 
@@ -492,9 +495,13 @@
 
 
 	if (type == INDEX_TYPE_FILES) {
-		files =  tracker_process_files_get_files_with_prefix (tracker, tracker->data_dir, "file-index.tmp.");
+		files =  tracker_process_files_get_files_with_prefix (tracker, 
+                                                                      tracker_get_data_dir (),
+                                                                      "file-index.tmp.");
 	} else {
-		files =  tracker_process_files_get_files_with_prefix (tracker, tracker->data_dir, "email-index.tmp.");
+		files =  tracker_process_files_get_files_with_prefix (tracker, 
+                                                                      tracker_get_data_dir (), 
+                                                                      "email-index.tmp.");
 	}
 
 	result = (files != NULL);
@@ -513,19 +520,26 @@
 gboolean
 tracker_indexer_has_merge_files (IndexType type)
 {
-	GSList *files = NULL;
-	gboolean result = FALSE;
-	char *final;
+	GSList      *files = NULL;
+	gboolean     result = FALSE;
+	gchar       *final;
+        const gchar *data_dir;
+
+        data_dir = tracker_get_data_dir ();
 
 	if (type == INDEX_TYPE_FILES) {
-		files =  tracker_process_files_get_files_with_prefix (tracker, tracker->data_dir, "file-index.tmp.");
-		final = g_build_filename(tracker->data_dir, "file-index-final", NULL);
+		files =  tracker_process_files_get_files_with_prefix (tracker, 
+                                                                      data_dir, 
+                                                                      "file-index.tmp.");
+		final = g_build_filename (data_dir, "file-index-final", NULL);
 	} else {
-		files =  tracker_process_files_get_files_with_prefix (tracker, tracker->data_dir, "email-index.tmp.");
-		final = g_build_filename (tracker->data_dir, "email-index-final", NULL);
+		files =  tracker_process_files_get_files_with_prefix (tracker, 
+                                                                      data_dir,
+                                                                      "email-index.tmp.");
+		final = g_build_filename (data_dir, "email-index-final", NULL);
 	}
 
-	result = (files != NULL);
+	result = files != NULL;
 
 	if (!result) {
 		result = g_file_test (final, G_FILE_TEST_EXISTS);
@@ -582,68 +596,59 @@
 void
 tracker_indexer_merge_indexes (IndexType type)
 {
-        GObject    *object;
-	GSList     *lst;
-	Indexer    *final_index;
-	GSList     *file_list = NULL, *index_list = NULL;
-	const char *prefix;
-	gint       i = 0, index_count, interval = 5000;
-	gboolean   final_exists;
+        GObject     *object;
+	GSList      *lst;
+	Indexer     *final_index;
+	GSList      *file_list = NULL, *index_list = NULL;
+	const gchar *prefix;
+        const gchar *data_dir;
+	gint         i = 0, index_count, interval = 5000;
+	gboolean     final_exists;
+        gchar       *tmp;
 
 	if (tracker->shutdown) {
                 return;
         }
 
+        data_dir = tracker_get_data_dir ();
         object = tracker_dbus_get_object (TRACKER_TYPE_DBUS_DAEMON);
 
 	if (type == INDEX_TYPE_FILES) {
-
 		g_return_if_fail (tracker->file_index);
 		
 		prefix = "file-index.tmp.";
-
 		index_list = g_slist_prepend (index_list, tracker->file_index);
 
-		char *tmp = g_build_filename (tracker->data_dir, "file-index-final", NULL);
-
+		tmp = g_build_filename (data_dir, "file-index-final", NULL);
 		final_exists = g_file_test (tmp, G_FILE_TEST_EXISTS);
-
 		g_free (tmp);
-
 	} else {
-		prefix = "email-index.tmp.";
-
 		g_return_if_fail (tracker->email_index);
-		
-		index_list = g_slist_prepend (index_list, tracker->email_index);
 
-		char *tmp = g_build_filename (tracker->data_dir, "email-index-final", NULL);
+		prefix = "email-index.tmp.";
+		index_list = g_slist_prepend (index_list, tracker->email_index);
 
+		tmp = g_build_filename (data_dir, "email-index-final", NULL);
 		final_exists = g_file_test (tmp, G_FILE_TEST_EXISTS);
-
 		g_free (tmp);
 	}
 	
-	file_list = tracker_process_files_get_files_with_prefix (tracker, tracker->data_dir, prefix);
+	file_list = tracker_process_files_get_files_with_prefix (tracker, data_dir, prefix);
 
 	if (!file_list || !file_list->data) {
-		
 		g_slist_free (index_list);
-
 		return;
-
 	} else {
                 GSList *file;
 
 		for (file = file_list; file; file = file->next) {
-
 			if (file->data) {
-				char *name = g_path_get_basename (file->data);
-				if (name) {
+				gchar *name = g_path_get_basename (file->data);
 
+				if (name) {
 					if (g_file_test (file->data, G_FILE_TEST_EXISTS)) {
-
                                                 Indexer *tmp_index = tracker_indexer_open (name, FALSE);
+
 						if (tmp_index) {
 							index_list = g_slist_prepend (index_list, tmp_index);
 						}
@@ -661,9 +666,7 @@
  	index_count = g_slist_length (index_list);
 
 	if (index_count < 2) {
-
 		g_slist_free (index_list);
-
 		return;
 	}
 
@@ -682,16 +685,12 @@
                                tracker->merge_count);
 
 	if (index_count == 2 && !final_exists) {
-
                 Indexer *index1 = index_list->data ;
                 Indexer *index2 = index_list->next->data ;
 
 		if (tracker_indexer_size (index1) * 3 < tracker_indexer_size (index2)) {
-
 			tracker_indexer_apply_changes (index2, index1, FALSE);
-
 			g_slist_free (index_list);
-
 			goto end_of_merging;
 		}
 	}
@@ -726,7 +725,6 @@
 		dpiterinit (index->word_index);
 
 		while ((str = dpiternext (index->word_index, NULL))) {
-
 			gchar buffer[MAX_HIT_BUFFER];
 			gint offset;
 			gint sz = sizeof (WordDetails);
@@ -1396,9 +1394,12 @@
 {
 	gchar       *filename;
         const gchar *filename_const;
-        gboolean    too_big;
+        const gchar *data_dir;
+        gboolean     too_big;
+
+        data_dir = tracker_get_data_dir ();
 
-	filename = g_build_filename (tracker->data_dir, TRACKER_INDEXER_FILE_INDEX_DB_FILENAME, NULL);
+	filename = g_build_filename (data_dir, TRACKER_INDEXER_FILE_INDEX_DB_FILENAME, NULL);
 	too_big = tracker_file_get_size (filename) > MAX_INDEX_FILE_SIZE;
         g_free (filename);
         
@@ -1407,7 +1408,7 @@
 		return TRUE;	
 	}
 
-	filename = g_build_filename (tracker->data_dir, TRACKER_INDEXER_EMAIL_INDEX_DB_FILENAME, NULL);
+	filename = g_build_filename (data_dir, TRACKER_INDEXER_EMAIL_INDEX_DB_FILENAME, NULL);
 	too_big = tracker_file_get_size (filename) > MAX_INDEX_FILE_SIZE;
 	g_free (filename);
         

Modified: branches/indexer-split/src/trackerd/tracker-main.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-main.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-main.c	Fri May 23 08:28:45 2008
@@ -131,6 +131,10 @@
 static GMainLoop     *main_loop;
 static gchar         *log_filename;
 
+static gchar         *data_dir;
+static gchar         *user_data_dir;
+static gchar         *sys_tmp_dir;
+
 /* Private command line parameters */
 static gchar        **no_watch_dirs;
 static gchar        **watch_dirs;
@@ -194,28 +198,33 @@
 static gchar *
 get_lock_file (void) 
 {
-	gchar *lock_file, *str;
+	gchar *lock_filename;
+	gchar *filename;
 	
-	str = g_strconcat (g_get_user_name (), "_tracker_lock", NULL);
+	filename = g_strconcat (g_get_user_name (), "_tracker_lock", NULL);
 
 	/* check if setup for NFS usage (and enable atomic NFS safe locking) */
 	if (tracker_config_get_nfs_locking (tracker->config)) {
 		/* Place lock file in tmp dir to allow multiple 
 		 * sessions on NFS 
 		 */
-		lock_file = g_build_filename (tracker->sys_tmp_root_dir, str, NULL);
-
+		lock_filename = g_build_filename (sys_tmp_dir, 
+						  filename, 
+						  NULL);
 	} else {
 		/* Place lock file in home dir to prevent multiple 
 		 * sessions on NFS (as standard locking might be 
 		 * broken on NFS) 
 		 */
-		lock_file = g_build_filename (tracker->root_dir, str, NULL);
+		lock_filename = g_build_filename (g_get_user_data_dir (), 
+						  "tracker", 
+						  filename, 
+						  NULL);
 	}
 
-	g_free (str);
+	g_free (filename);
 
-	return lock_file;
+	return lock_filename;
 }
 
 static void
@@ -466,23 +475,27 @@
 static void
 initialise_locations (void)
 {
-	gchar *str;
+	gchar *filename;
 	
 	/* Public locations */
-	str = g_strdup_printf ("Tracker-%s.%d", g_get_user_name (), getpid ());
-	tracker->sys_tmp_root_dir = g_build_filename (g_get_tmp_dir (), str, NULL);
-	g_free (str);
-
-	tracker->root_dir = g_build_filename (g_get_user_data_dir (), "tracker", NULL);
-	tracker->data_dir = g_build_filename (g_get_user_cache_dir (), "tracker", NULL);
-	tracker->config_dir = g_strdup (g_get_user_config_dir ());
-	tracker->user_data_dir = g_build_filename (tracker->root_dir, "data", NULL);
-	tracker->xesam_dir = g_build_filename (g_get_home_dir (), ".xesam", NULL);
+	user_data_dir = g_build_filename (g_get_user_data_dir (), 
+                                          "tracker", 
+                                          "data", 
+                                          NULL);
+
+	data_dir = g_build_filename (g_get_user_cache_dir (), 
+				     "tracker", 
+				     NULL);
 
-        tracker->email_attachments_dir = g_build_filename (tracker->sys_tmp_root_dir, "Attachments", NULL);
+	filename = g_strdup_printf ("Tracker-%s.%d", g_get_user_name (), getpid ());
+	sys_tmp_dir = g_build_filename (g_get_tmp_dir (), filename, NULL);
+	g_free (filename);
 
 	/* Private locations */
-	log_filename = g_build_filename (tracker->root_dir, "tracker.log", NULL);
+	log_filename = g_build_filename (g_get_user_data_dir (), 
+					 "tracker", 
+					 "tracker.log", 
+					 NULL);
 }
 
 static void
@@ -493,8 +506,8 @@
 	*need_index = FALSE;
 	
 	/* Remove an existing one */
-	if (g_file_test (tracker->sys_tmp_root_dir, G_FILE_TEST_EXISTS)) {
-		tracker_dir_remove (tracker->sys_tmp_root_dir);
+	if (g_file_test (sys_tmp_dir, G_FILE_TEST_EXISTS)) {
+		tracker_dir_remove (sys_tmp_dir);
 	}
 
 	/* Remove old tracker dirs */
@@ -508,20 +521,22 @@
 
 	/* Remove database if we are reindexing */
 	if (reindex || tracker_db_needs_setup ()) {
-		tracker_dir_remove (tracker->data_dir);
+		tracker_dir_remove (data_dir);
 		*need_index = TRUE;
 	}
 
         /* Create other directories we need */
-	if (!g_file_test (tracker->user_data_dir, G_FILE_TEST_EXISTS)) {
-		g_mkdir_with_parents (tracker->user_data_dir, 00755);
+	if (!g_file_test (user_data_dir, G_FILE_TEST_EXISTS)) {
+		g_mkdir_with_parents (user_data_dir, 00755);
 	}
 
-	if (!g_file_test (tracker->data_dir, G_FILE_TEST_EXISTS)) {
-		g_mkdir_with_parents (tracker->data_dir, 00755);
+	if (!g_file_test (data_dir, G_FILE_TEST_EXISTS)) {
+		g_mkdir_with_parents (data_dir, 00755);
 	}
 
-	g_mkdir_with_parents (tracker->email_attachments_dir, 00700);
+        filename = g_build_filename (sys_tmp_dir, "Attachments", NULL);
+	g_mkdir_with_parents (filename, 00700);
+	g_free (filename);
 
 	/* Remove existing log files */
 	tracker_file_unlink (log_filename);
@@ -593,15 +608,13 @@
 	/* Move final file to index file if present and no files left
 	 * to merge.
 	 */
-	final_index_name = g_build_filename (tracker->data_dir, 
-					     "file-index-final", 
-					     NULL);
+	final_index_name = g_build_filename (data_dir, "file-index-final", NULL);
 	
 	if (g_file_test (final_index_name, G_FILE_TEST_EXISTS) && 
 	    !tracker_indexer_has_tmp_merge_files (INDEX_TYPE_FILES)) {
 		gchar *file_index_name;
 
-		file_index_name = g_build_filename (tracker->data_dir, 
+		file_index_name = g_build_filename (data_dir, 
 						    TRACKER_INDEXER_FILE_INDEX_DB_FILENAME, 
 						    NULL);
 	
@@ -614,7 +627,7 @@
 	
 	g_free (final_index_name);
 	
-	final_index_name = g_build_filename (tracker->data_dir, 
+	final_index_name = g_build_filename (data_dir, 
 					     "email-index-final", 
 					     NULL);
 	
@@ -622,7 +635,7 @@
 	    !tracker_indexer_has_tmp_merge_files (INDEX_TYPE_EMAILS)) {
 		gchar *file_index_name;
 
-		file_index_name = g_build_filename (tracker->data_dir, 
+		file_index_name = g_build_filename (data_dir, 
 						    TRACKER_INDEXER_EMAIL_INDEX_DB_FILENAME, 
 						    NULL);
 	
@@ -768,13 +781,9 @@
 shutdown_locations (void)
 {
 	/* Public locations */
-	g_free (tracker->data_dir);
-	g_free (tracker->config_dir);
-	g_free (tracker->root_dir);
-	g_free (tracker->user_data_dir);
-	g_free (tracker->sys_tmp_root_dir);
-	g_free (tracker->email_attachments_dir);
-	g_free (tracker->xesam_dir);
+	g_free (data_dir);
+	g_free (user_data_dir);
+	g_free (sys_tmp_dir);
 
 	/* Private locations */
 	g_free (log_filename);
@@ -785,13 +794,13 @@
 {
 	/* If we are reindexing, just remove the databases */
 	if (tracker->reindex) {
-		tracker_dir_remove (tracker->data_dir);
-		g_mkdir_with_parents (tracker->data_dir, 00755);
+		tracker_dir_remove (data_dir);
+		g_mkdir_with_parents (data_dir, 00755);
 	}
 
 	/* Remove sys tmp directory */
-	if (tracker->sys_tmp_root_dir) {
-		tracker_dir_remove (tracker->sys_tmp_root_dir);
+	if (sys_tmp_dir) {
+		tracker_dir_remove (sys_tmp_dir);
 	}
 }
 
@@ -934,17 +943,12 @@
 
 	sanity_check_option_values ();
 
-	tracker_nfs_lock_init (tracker->root_dir,
-			       tracker_config_get_nfs_locking (tracker->config));
+	tracker_nfs_lock_init (tracker_config_get_nfs_locking (tracker->config));
 	tracker_db_init ();
-	tracker_db_manager_init (tracker->data_dir,
-				 tracker->user_data_dir,
-				 tracker->sys_tmp_root_dir);
+	tracker_db_manager_init (data_dir, user_data_dir, sys_tmp_dir);
 	tracker_xesam_init ();
 	tracker_cache_init ();
-
 	tracker_ontology_init ();
-
 	tracker_email_init (tracker->config);
 
 #ifdef HAVE_HAL 
@@ -1036,11 +1040,6 @@
 	shutdown_directories ();
 
 	/* Shutdown major subsystems */
-        if (tracker->hal) {
-                g_object_unref (tracker->hal);
-                tracker->hal = NULL;
-        }
-
 	tracker_email_shutdown ();
 	tracker_dbus_shutdown ();
 	tracker_ontology_shutdown ();
@@ -1051,6 +1050,10 @@
 	tracker_nfs_lock_shutdown ();
 	tracker_log_shutdown ();
 
+        if (tracker->hal) {
+                g_object_unref (tracker->hal);
+        }
+
 	if (tracker->language) {
 		g_object_unref (tracker->language);
 	}
@@ -1069,3 +1072,15 @@
 {
 	g_main_loop_quit (main_loop);
 }
+
+const gchar *
+tracker_get_data_dir (void)
+{
+	return data_dir;
+}
+
+const gchar *
+tracker_get_sys_tmp_dir (void)
+{
+	return sys_tmp_dir;
+}

Modified: branches/indexer-split/src/trackerd/tracker-main.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-main.h	(original)
+++ branches/indexer-split/src/trackerd/tracker-main.h	Fri May 23 08:28:45 2008
@@ -58,16 +58,6 @@
 
 	/* Config options */
 	guint32          watch_limit; 
-	gpointer         xesam_db;
-
-	/* Data directories */
-	gchar            *data_dir;
-	gchar            *config_dir;
-	gchar            *root_dir;
-	gchar            *user_data_dir;
-	gchar            *sys_tmp_root_dir;
-        gchar            *email_attachments_dir;
-	gchar            *xesam_dir;
 
 	/* Performance and memory usage options */
 	gint              max_process_queue_size;
@@ -124,7 +114,10 @@
 	GCond            *metadata_signal_cond;
 } Tracker;
 
-void tracker_shutdown (void);
+void         tracker_shutdown        (void);
+
+const gchar *tracker_get_data_dir    (void);
+const gchar *tracker_get_sys_tmp_dir (void);
 
 G_END_DECLS
 

Modified: branches/indexer-split/src/trackerd/tracker-metadata.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-metadata.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-metadata.c	Fri May 23 08:28:45 2008
@@ -75,7 +75,9 @@
 		char *temp_file_name;
 		int  fd;
 
-		temp_file_name = g_build_filename (tracker->sys_tmp_root_dir, "tmp_text_file_XXXXXX", NULL);
+		temp_file_name = g_build_filename (tracker_get_sys_tmp_dir (),
+                                                   "tmp_text_file_XXXXXX",
+                                                   NULL);
 
 		fd = g_mkstemp (temp_file_name);
 

Modified: branches/indexer-split/src/trackerd/tracker-utils.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-utils.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-utils.c	Fri May 23 08:28:45 2008
@@ -29,6 +29,7 @@
 #include "tracker-utils.h"
 #include "tracker-main.h"
 #include "tracker-process-files.h"
+#include "tracker-xesam.h"
 
 extern Tracker *tracker;
 
@@ -130,7 +131,7 @@
 void
 tracker_add_io_grace (const gchar *uri)
 {
-	if (g_str_has_prefix (uri, tracker->xesam_dir)) {
+	if (tracker_xesam_is_uri_in_xesam_dir (uri)) {
 		return;
 	}
 
@@ -143,8 +144,9 @@
 gboolean
 tracker_is_low_diskspace (void)
 {
-	struct statvfs st;
-        gint           low_disk_space_limit;
+	struct statvfs  st;
+	const gchar    *data_dir;
+        gint            low_disk_space_limit;
 
         low_disk_space_limit = tracker_config_get_low_disk_space_limit (tracker->config);
 
@@ -152,12 +154,16 @@
 		return FALSE;
 	}
 
-	if (statvfs (tracker->data_dir, &st) == -1) {
+	data_dir = tracker_get_data_dir ();
+
+	if (statvfs (data_dir, &st) == -1) {
 		static gboolean reported = 0;
-		if (! reported) {
+
+		if (!reported) {
 			reported = 1;
-			g_critical ("Could not statvfs %s", tracker->data_dir);
+			g_critical ("Could not statvfs %s", data_dir);
 		}
+
 		return FALSE;
 	}
 

Modified: branches/indexer-split/src/trackerd/tracker-xesam.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-xesam.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-xesam.c	Fri May 23 08:28:45 2008
@@ -27,18 +27,19 @@
 #include "tracker-xesam.h"
 #include "tracker-main.h"
 
-extern Tracker *tracker;
-
-
 static GHashTable *xesam_sessions; 
+static gchar      *xesam_dir;
 static gboolean    live_search_handler_running = FALSE;
 
 GQuark
 tracker_xesam_error_quark (void)
 {
 	static GQuark quark = 0;
-	if (quark == 0)
+
+	if (quark == 0) {
 		quark = g_quark_from_static_string ("TrackerXesam");
+	}
+
 	return quark;
 }
 
@@ -53,6 +54,8 @@
 						g_str_equal, 
 						(GDestroyNotify) g_free, 
 						(GDestroyNotify) g_object_unref);
+	
+	xesam_dir = g_build_filename (g_get_home_dir (), ".xesam", NULL);
 }
 
 void
@@ -62,7 +65,11 @@
 		return;
 	}
 
+	g_free (xesam_dir);
+	xesam_dir = NULL;
+
 	g_hash_table_unref (xesam_sessions);
+	xesam_sessions = NULL;
 }
 
 TrackerXesamSession *
@@ -361,4 +368,10 @@
 	return key;
 }
 
+gboolean
+tracker_xesam_is_uri_in_xesam_dir (const gchar *uri) 
+{
+	g_return_val_if_fail (uri != NULL, FALSE);
 
+	return g_str_has_prefix (uri, xesam_dir);
+}

Modified: branches/indexer-split/src/trackerd/tracker-xesam.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-xesam.h	(original)
+++ branches/indexer-split/src/trackerd/tracker-xesam.h	Fri May 23 08:28:45 2008
@@ -57,6 +57,7 @@
 							      GError                 **error);
 void                    tracker_xesam_wakeup                 (guint32                  last_id);
 gchar *                 tracker_xesam_generate_unique_key    (void);
+gboolean                tracker_xesam_is_uri_in_xesam_dir    (const gchar             *uri);
 
 G_END_DECLS
 



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