tracker r1797 - in branches/indexer-split: . src/tracker-indexer src/tracker-indexer/modules
- From: carlosg svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r1797 - in branches/indexer-split: . src/tracker-indexer src/tracker-indexer/modules
- Date: Fri, 27 Jun 2008 13:04:09 +0000 (UTC)
Author: carlosg
Date: Fri Jun 27 13:04:08 2008
New Revision: 1797
URL: http://svn.gnome.org/viewvc/tracker?rev=1797&view=rev
Log:
2008-06-27 Carlos Garnacho <carlos imendio com>
* src/tracker-indexer/tracker-indexer-db.c
(tracker_db_create_service): Allow modules to specify a custom dirname
and basename for the service.
* src/tracker-indexer/modules/evolution.c: And use it for local mail.
IMAP has yet to come.
Modified:
branches/indexer-split/ChangeLog
branches/indexer-split/src/tracker-indexer/Makefile.am
branches/indexer-split/src/tracker-indexer/modules/evolution.c
branches/indexer-split/src/tracker-indexer/tracker-indexer-db.c
Modified: branches/indexer-split/src/tracker-indexer/Makefile.am
==============================================================================
--- branches/indexer-split/src/tracker-indexer/Makefile.am (original)
+++ branches/indexer-split/src/tracker-indexer/Makefile.am Fri Jun 27 13:04:08 2008
@@ -8,7 +8,7 @@
-DG_LOG_DOMAIN=\"Tracker\" \
-I$(top_srcdir)/src \
$(DBUS_CFLAGS) \
- $(GMODULE_CFLAGS)
+ $(GMODULE_CFLAGS)
bin_PROGRAMS = tracker-indexer
Modified: branches/indexer-split/src/tracker-indexer/modules/evolution.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/modules/evolution.c (original)
+++ branches/indexer-split/src/tracker-indexer/modules/evolution.c Fri Jun 27 13:04:08 2008
@@ -24,7 +24,9 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
+#include <stdlib.h>
#include <tracker-indexer/tracker-module.h>
+#include <libtracker-common/tracker-utils.h>
#include <libtracker-common/tracker-file-utils.h>
#include <libtracker-common/tracker-type-utils.h>
@@ -75,6 +77,9 @@
SUMMARY_TYPE_TIME_T
};
+static gchar *local_dir = NULL;
+static gchar *imap_dir = NULL;
+
static gboolean
read_summary (FILE *summary,
...)
@@ -181,7 +186,7 @@
tracker_module_get_name (void)
{
/* Return module name here */
- return "Evolution";
+ return "EvolutionEmails";
}
gchar **
@@ -191,9 +196,12 @@
g_mime_init (0);
+ local_dir = g_build_filename (g_get_home_dir (), ".evolution", "mail", "local", G_DIR_SEPARATOR_S, NULL);
+ imap_dir = g_build_filename (g_get_home_dir (), ".evolution", "mail", "imap", G_DIR_SEPARATOR_S, NULL);
+
dirs = g_new0 (gchar *, 3);
- dirs[0] = g_build_filename (g_get_home_dir (), ".evolution", "mail", "local", NULL);
- dirs[1] = g_build_filename (g_get_home_dir (), ".evolution", "mail", "imap", NULL);
+ dirs[0] = g_strdup (local_dir);
+ dirs[1] = g_strdup (imap_dir);
return dirs;
}
@@ -202,11 +210,9 @@
get_mail_storage_type_from_path (const gchar *path)
{
MailStorageType type = MAIL_STORAGE_NONE;
- gchar *basename, *local_dir, *imap_dir;
+ gchar *basename;
basename = g_path_get_basename (path);
- local_dir = g_build_filename (g_get_home_dir (), ".evolution", "mail", "local", NULL);
- imap_dir = g_build_filename (g_get_home_dir (), ".evolution", "mail", "imap", NULL);
if (g_str_has_prefix (path, local_dir) &&
strchr (basename, '.') == NULL) {
@@ -225,8 +231,6 @@
type = MAIL_STORAGE_NONE;
}
- g_free (local_dir);
- g_free (imap_dir);
g_free (basename);
return type;
@@ -378,12 +382,31 @@
g_slice_free (EvolutionFileData, data);
}
+gint
+get_mbox_message_id (GMimeMessage *message)
+{
+ const gchar *header, *pos;
+ gchar *number;
+ gint id;
+
+ header = g_mime_message_get_header (message, "X-Evolution");
+ pos = strchr (header, '-');
+
+ number = g_strndup (header, pos - header);
+ id = strtoul (number, NULL, 16);
+
+ g_free (number);
+
+ return id;
+}
+
GHashTable *
get_metadata_for_mbox (TrackerFile *file)
{
EvolutionLocalData *data;
GMimeMessage *message;
GHashTable *metadata;
+ gchar *dir, *name;
time_t date;
data = file->data;
@@ -397,6 +420,12 @@
NULL,
(GDestroyNotify) g_free);
+ dir = tracker_string_replace (file->path, local_dir, NULL);
+ name = g_strdup_printf ("%s;uid=%d", dir, get_mbox_message_id (message));
+
+ g_hash_table_insert (metadata, METADATA_FILE_PATH, g_strdup ("email://local local"));
+ g_hash_table_insert (metadata, METADATA_FILE_NAME, name);
+
g_mime_message_get_date (message, &date, NULL);
g_hash_table_insert (metadata, METADATA_EMAIL_DATE,
tracker_uint_to_string (date));
@@ -416,6 +445,8 @@
* Attachments
*/
+ g_free (dir);
+
return metadata;
}
Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer-db.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer-db.c (original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer-db.c Fri Jun 27 13:04:08 2008
@@ -142,8 +142,17 @@
id_str = tracker_guint32_to_string (id);
service_type_id_str = tracker_int_to_string (tracker_service_get_id (service));
- dirname = g_path_get_dirname (path);
- basename = g_path_get_basename (path);
+ dirname = g_hash_table_lookup (metadata, "File:Path");
+ basename = g_hash_table_lookup (metadata, "File:Name");
+
+ if (dirname && basename) {
+ /* Keep a copy */
+ dirname = g_strdup (dirname);
+ basename = g_strdup (basename);
+ } else {
+ dirname = g_path_get_dirname (path);
+ basename = g_path_get_basename (path);
+ }
is_dir = g_file_test (path, G_FILE_TEST_IS_DIR);
is_symlink = g_file_test (path, G_FILE_TEST_IS_SYMLINK);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]