tracker r1266 - in trunk: . src/trackerd
- From: pvanhoof svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r1266 - in trunk: . src/trackerd
- Date: Fri, 11 Apr 2008 09:51:03 +0100 (BST)
Author: pvanhoof
Date: Fri Apr 11 09:51:02 2008
New Revision: 1266
URL: http://svn.gnome.org/viewvc/tracker?rev=1266&view=rev
Log:
2008-04-11 Philip Van Hoof <pvanhoof gnome org>
* src/trackerd/tracker-email-modest.c
* src/trackerd/tracker-utils.c
* src/trackerd/tracker-utils.h
* src/trackerd/tracker-email-utils.c
* src/trackerd/tracker-email-utils.h
* src/trackerd/trackerd.c: Added stopping watching E-mail service
paths. Also fixes a potential memory leak with the Hashtable
service_directory_table
Modified:
trunk/ChangeLog
trunk/src/trackerd/tracker-email-modest.c
trunk/src/trackerd/tracker-email-utils.c
trunk/src/trackerd/tracker-email-utils.h
trunk/src/trackerd/tracker-utils.c
trunk/src/trackerd/tracker-utils.h
trunk/src/trackerd/trackerd.c
Modified: trunk/src/trackerd/tracker-email-modest.c
==============================================================================
--- trunk/src/trackerd/tracker-email-modest.c (original)
+++ trunk/src/trackerd/tracker-email-modest.c Fri Apr 11 09:51:02 2008
@@ -168,6 +168,41 @@
static void check_summary_file (DBConnection *db_con, const gchar *filename, MailStore *store);
+static void
+load_current_dynamic_folders (ModestConfig *modest_config)
+{
+ /* TODO: Load and add existing dynamic-found dirs to modest_config->dynamic_dirs */
+
+ email_watch_directories (modest_config->dynamic_dirs, "ModestEmails");
+}
+
+#if 0
+
+unused
+
+static void
+add_dynamic_folder (ModestConfig *modest_config, const gchar *dir_name)
+{
+ char *dirn = g_strdup (dir_name);
+ modest_config->dynamic_dirs = g_slist_prepend (modest_config->dynamic_dirs, dirn);
+ email_watch_directory (dirn, "ModestEmails");
+}
+
+static void
+del_dynamic_folder (ModestConfig *modest_config, const gchar *dir_name)
+{
+ GSList *found = g_slist_find_custom (modest_config->dynamic_dirs, dir_name, (GCompareFunc) strcmp);
+ if (found) {
+ gchar *rem_name = found->data;
+ /* */
+ email_unwatch_directory (rem_name, "ModestEmails");
+ g_free (rem_name);
+ modest_config->dynamic_dirs = g_slist_remove_link (modest_config->dynamic_dirs, found);
+ g_slist_free (found);
+ }
+}
+
+#endif
static gboolean
modest_module_is_running (void)
@@ -268,8 +303,8 @@
tracker_db_free_result (res);
}
- g_slist_foreach (modest_config->dirs, (GFunc) email_watch_directory, "ModestEmails");
- g_slist_foreach (modest_config->dynamic_dirs, (GFunc) email_watch_directory, "ModestEmails");
+ email_watch_directories (modest_config->dirs, "ModestEmails");
+ load_current_dynamic_folders (modest_config);
}
static gboolean
@@ -504,10 +539,7 @@
m_conf->dirs = moredir (dir_maildir, dir_maildir, m_conf->dirs);
g_free (dir_maildir);
-
- /* TODO: Future support
- * m_conf->dynamic_dirs must be updated whenever an MMC card gets inserted */
-
+ /* Init to NULL here */
m_conf->dynamic_dirs = NULL;
return TRUE;
Modified: trunk/src/trackerd/tracker-email-utils.c
==============================================================================
--- trunk/src/trackerd/tracker-email-utils.c (original)
+++ trunk/src/trackerd/tracker-email-utils.c Fri Apr 11 09:51:02 2008
@@ -56,6 +56,13 @@
Public functions
*********************************************************************************************/
+void
+email_unwatch_directory (const gchar *dir, const gchar *service)
+{
+ tracker_log ("Registering path %s as belonging to service %s", dir, service);
+ tracker_del_service_path (service, dir);
+}
+
void
email_watch_directory (const gchar *dir, const gchar *service)
{
Modified: trunk/src/trackerd/tracker-email-utils.h
==============================================================================
--- trunk/src/trackerd/tracker-email-utils.h (original)
+++ trunk/src/trackerd/tracker-email-utils.h Fri Apr 11 09:51:02 2008
@@ -126,6 +126,7 @@
} MailMessage;
+void email_unwatch_directory (const gchar *dir, const gchar *service);
void email_watch_directory (const gchar *dir, const gchar *service);
void email_watch_directories (const GSList *dirs, const gchar *service);
Modified: trunk/src/trackerd/tracker-utils.c
==============================================================================
--- trunk/src/trackerd/tracker-utils.c (original)
+++ trunk/src/trackerd/tracker-utils.c Fri Apr 11 09:51:02 2008
@@ -1400,12 +1400,26 @@
char *dir_path = g_strdup (path);
char *service_type = g_strdup (service);
- tracker->service_directory_list = g_slist_prepend (tracker->service_directory_list, dir_path);
-
+ tracker->service_directory_list = g_slist_prepend (tracker->service_directory_list, g_strdup (path));
g_hash_table_insert (tracker->service_directory_table, dir_path, service_type);
}
+void
+tracker_del_service_path (const char *service, const char *path)
+{
+ if (!service || !path) {
+ return;
+ }
+ GSList *found = g_slist_find_custom (tracker->service_directory_list, path, (GCompareFunc) strcmp);
+ if (found) {
+ g_free (found->data);
+ tracker->service_directory_list = g_slist_remove_link (tracker->service_directory_list, found);
+ g_slist_free (found);
+ }
+ g_hash_table_remove (tracker->service_directory_table, path);
+}
+
char *
tracker_get_service_for_uri (const char *uri)
{
Modified: trunk/src/trackerd/tracker-utils.h
==============================================================================
--- trunk/src/trackerd/tracker-utils.h (original)
+++ trunk/src/trackerd/tracker-utils.h Fri Apr 11 09:51:02 2008
@@ -470,6 +470,8 @@
GSList * tracker_get_service_dirs (const char *service);
void tracker_add_service_path (const char *service, const char *path);
+void tracker_del_service_path (const char *service, const char *path);
+
char * tracker_get_service_for_uri (const char *uri);
gboolean tracker_is_service_file (const char *uri);
Modified: trunk/src/trackerd/trackerd.c
==============================================================================
--- trunk/src/trackerd/trackerd.c (original)
+++ trunk/src/trackerd/trackerd.c Fri Apr 11 09:51:02 2008
@@ -717,8 +717,8 @@
NULL);
tracker->service_directory_table = g_hash_table_new_full (g_str_hash,
g_str_equal,
- NULL,
- NULL);
+ g_free,
+ g_free);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]