tracker/tracker-assorted_fixes.patch

249 lines
5.4 KiB
Diff

--- src/trackerd/tracker-indexer.c 2007/12/10 23:37:31 1068
+++ src/trackerd/tracker-indexer.c 2007/12/11 21:16:02 1076
@@ -215,7 +215,7 @@
}
if (!word_index) {
- tracker_log ("%s index was not closed properly and caused error %s- attempting repair", name, dperrmsg (dpecode));
+ tracker_error ("%s index was not closed properly and caused error %s- attempting repair", name, dperrmsg (dpecode));
if (dprepair (name)) {
word_index = dpopen (name, DP_OWRITER | DP_OCREAT | DP_ONOLCK, tracker->min_index_bucket_count);
} else {
@@ -228,6 +228,16 @@
}
+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;
+}
+
Indexer *
tracker_indexer_open (const gchar *name)
{
@@ -237,7 +247,7 @@
if (!name) return NULL;
- word_dir = g_build_filename (tracker->data_dir, name, NULL);
+ word_dir = get_index_file (name);
word_index = open_index (word_dir);
@@ -504,7 +514,7 @@
}
static void
-move_index (Indexer *src_index, Indexer *dest_index)
+move_index (Indexer *src_index, Indexer *dest_index, const char *fname)
{
if (!src_index || !dest_index) {
@@ -515,8 +525,6 @@
/* remove existing main index */
g_mutex_lock (dest_index->word_mutex);
- char *fname = dpname (dest_index->word_index);
-
dpclose (dest_index->word_index);
dpremove (fname);
@@ -526,7 +534,9 @@
tracker_indexer_close (src_index);
/* rename and reopen final index as main index */
-
+
+ tracker_log ("renaming %s to %s", final_name, fname);
+
rename (final_name, fname);
dest_index->word_index = open_index (fname);
@@ -535,7 +545,6 @@
tracker_error ("index creation failure for %s from %s", fname, final_name);
}
- g_free (fname);
g_free (final_name);
g_mutex_unlock (dest_index->word_mutex);
@@ -556,7 +565,7 @@
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);
@@ -571,7 +580,7 @@
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);
@@ -748,6 +757,9 @@
g_free (str);
}
+
+
+
/* dont free last entry as that is the main index */
if (lst->next) {
@@ -757,7 +769,17 @@
} else {
- move_index (final_index, index);
+ if (type == INDEX_TYPE_FILES) {
+
+ char *fname = get_index_file ("file-index.db");
+ move_index (final_index, tracker->file_index, fname);
+ g_free (fname);
+
+ } else {
+ char *fname = get_index_file ("email-index.db");
+ move_index (final_index, tracker->email_index, fname);
+ g_free (fname);
+ }
}
}
--- src/trackerd/tracker-utils.c 2007/12/11 18:29:27 1075
+++ src/trackerd/tracker-utils.c 2007/12/13 23:55:10 1079
@@ -3491,11 +3491,13 @@
/* logging is thread safe */
static size_t log_size = 0;
- if (! message)
+ if (!message)
return;
g_print ("%s\n", message);
+ if (!tracker->log_file) return;
+
/* ensure file logging is thread safe */
g_mutex_lock (tracker->log_access_mutex);
--- src/trackerd/trackerd.c 2007/12/11 02:57:07 1070
+++ src/trackerd/trackerd.c 2007/12/13 23:55:10 1079
@@ -618,19 +618,13 @@
static void
signal_handler (gint signo)
{
- if (!tracker->is_running) {
- return;
- }
-
static gboolean in_loop = FALSE;
- /* avoid re-entrant signals handler calls */
- if (in_loop && signo != SIGSEGV) {
- return;
+ /* die if we get re-entrant signals handler calls */
+ if (in_loop) {
+ exit (EXIT_FAILURE);
}
- in_loop = TRUE;
-
switch (signo) {
case SIGSEGV:
@@ -646,6 +640,8 @@
case SIGTERM:
case SIGINT:
+ in_loop = TRUE;
+
tracker->is_running = FALSE;
tracker_end_watching ();
@@ -660,8 +656,7 @@
if (tracker->log_file && g_strsignal (signo)) {
tracker_log ("Received signal %s ", g_strsignal (signo));
}
- in_loop = FALSE;
- break;
+ break;
}
}
@@ -2422,6 +2417,14 @@
if (!g_thread_supported ())
g_thread_init (NULL);
+ dbus_g_thread_init ();
+
+ tracker = g_new0 (Tracker, 1);
+
+ tracker->dbus_con = tracker_dbus_init ();
+
+ add_local_dbus_connection_monitoring (tracker->dbus_con);
+
setlocale (LC_ALL, "");
bindtextdomain (GETTEXT_PACKAGE, TRACKER_LOCALEDIR);
@@ -2478,20 +2481,14 @@
sigaction (SIGINT, &act, NULL);
#endif
- dbus_g_thread_init ();
+
- tracker = g_new0 (Tracker, 1);
+
tracker->status = STATUS_INIT;
tracker->is_running = FALSE;
- tracker->log_file = g_build_filename (tracker->root_dir, "tracker.log", NULL);
-
- tracker->dbus_con = tracker_dbus_init ();
-
- add_local_dbus_connection_monitoring (tracker->dbus_con);
-
/* Make a temporary directory for Tracker into g_get_tmp_dir() directory */
gchar *tmp_dir;
@@ -2505,6 +2502,16 @@
tracker->config_dir = g_strdup (g_get_user_config_dir ());
tracker->user_data_dir = g_build_filename (tracker->root_dir, "data", NULL);
+ tracker->log_file = g_build_filename (tracker->root_dir, "tracker.log", NULL);
+
+ /* reset log file */
+ tracker_unlink (tracker->log_file);
+
+ tracker_log ("starting log");
+
+
+
+
g_free (tmp_dir);
/* remove an existing one */
@@ -2636,9 +2643,7 @@
ioprio ();
#endif
- /* reset log file */
- tracker_unlink (tracker->log_file);
-
+
/* deal with config options with defaults, config file and option params */
set_defaults ();