tracker r1469 - in branches/indexer-split: . src/libtracker-common src/libtracker-db src/trackerd
- From: mr svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r1469 - in branches/indexer-split: . src/libtracker-common src/libtracker-db src/trackerd
- Date: Fri, 23 May 2008 08:28:46 +0000 (UTC)
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]