tracker r1266 - in trunk: . src/trackerd



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]