aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/e-mail-backend.c17
-rw-r--r--mail/mail-session.c30
2 files changed, 32 insertions, 15 deletions
diff --git a/mail/e-mail-backend.c b/mail/e-mail-backend.c
index 5d5effe72c..64880ff98f 100644
--- a/mail/e-mail-backend.c
+++ b/mail/e-mail-backend.c
@@ -14,8 +14,11 @@
* You should have received a copy of the GNU Lesser General Public
* License along with the program; if not, see <http://www.gnu.org/licenses/>
*
+ * Authors:
+ * Jonathon Jongsma <jonathon.jongsma@collabora.co.uk>
*
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ * Copyright (C) 2009 Intel Corporation
*
*/
@@ -55,6 +58,18 @@ static gpointer parent_class;
/* FIXME Kill this thing. It's a horrible hack. */
extern gint camel_application_is_exiting;
+static const gchar *
+mail_shell_backend_get_data_dir (EShellBackend *backend)
+{
+ return mail_session_get_data_dir ();
+}
+
+static const gchar *
+mail_shell_backend_get_config_dir (EShellBackend *backend)
+{
+ return mail_session_get_config_dir ();
+}
+
/* Callback for various asynchronous CamelStore operations where
* the EActivity's reference count is used as a counting semaphore. */
static void
@@ -431,6 +446,8 @@ mail_backend_class_init (EMailBackendClass *class)
shell_backend_class = E_SHELL_BACKEND_CLASS (class);
shell_backend_class->migrate = e_mail_migrate;
+ shell_backend_class->get_data_dir = mail_shell_backend_get_data_dir;
+ shell_backend_class->get_config_dir = mail_shell_backend_get_config_dir;
}
static void
diff --git a/mail/mail-session.c b/mail/mail-session.c
index 2360c064c0..3dade5b918 100644
--- a/mail/mail-session.c
+++ b/mail/mail-session.c
@@ -14,8 +14,10 @@
*
*
* Authors:
+ * Jonathon Jongsma <jonathon.jongsma@collabora.co.uk>
*
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ * Copyright (C) 2009 Intel Corporation
*
*/
@@ -85,8 +87,9 @@ typedef struct _MailSessionClass {
} MailSessionClass;
-static EShellBackend *session_shell_backend;
static CamelSessionClass *ms_parent_class;
+static gchar * mail_data_dir;
+static gchar * mail_config_dir;
static gchar *get_password(CamelSession *session, CamelService *service, const gchar *domain, const gchar *prompt, const gchar *item, guint32 flags, CamelException *ex);
static void forget_password(CamelSession *session, CamelService *service, const gchar *domain, const gchar *item, CamelException *ex);
@@ -113,6 +116,9 @@ finalise (MailSession *session)
gconf_client_notify_remove (mail_config_get_gconf_client (), session_check_junk_notify_id);
mail_async_event_destroy(session->async);
+
+ g_free (mail_data_dir);
+ g_free (mail_config_dir);
}
static void
@@ -518,7 +524,7 @@ main_get_filter_driver (CamelSession *session, const gchar *type, CamelException
gconf = mail_config_get_gconf_client ();
- data_dir = e_shell_backend_get_data_dir (session_shell_backend);
+ data_dir = mail_session_get_data_dir ();
user = g_build_filename (data_dir, "filters.xml", NULL);
system = g_build_filename (EVOLUTION_PRIVDATADIR, "filtertypes.xml", NULL);
fc = (ERuleContext *) em_filter_context_new ();
@@ -717,15 +723,11 @@ mail_session_init (EShellBackend *shell_backend)
EShell *shell;
GConfClient *gconf;
gboolean online;
- const gchar *data_dir;
-
- session_shell_backend = shell_backend;
shell = e_shell_backend_get_shell (shell_backend);
online = e_shell_get_online (shell);
- data_dir = e_get_user_data_dir ();
- if (camel_init (data_dir, TRUE) != 0)
+ if (camel_init (e_get_user_data_dir (), TRUE) != 0)
exit (0);
camel_provider_init();
@@ -734,8 +736,10 @@ mail_session_init (EShellBackend *shell_backend)
e_account_combo_box_set_session (session); /* XXX Don't ask... */
e_account_writable(NULL, E_ACCOUNT_SOURCE_SAVE_PASSWD); /* Init the EAccount Setup */
- data_dir = e_shell_backend_get_data_dir (shell_backend);
- camel_session_construct (session, data_dir);
+ mail_data_dir = g_build_filename (e_get_user_data_dir (), "mail", NULL);
+ mail_config_dir = g_build_filename (mail_data_dir, "config", NULL);
+
+ camel_session_construct (session, mail_data_dir);
gconf = mail_config_get_gconf_client ();
gconf_client_add_dir (gconf, "/apps/evolution/mail/junk", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
@@ -805,16 +809,12 @@ mail_session_set_junk_headers (const gchar **name, const gchar **value, gint len
const gchar *
mail_session_get_data_dir (void)
{
- g_return_val_if_fail (session_shell_backend, NULL);
-
- return e_shell_backend_get_data_dir (session_shell_backend);
+ return mail_data_dir;
}
const gchar *
mail_session_get_config_dir (void)
{
- g_return_val_if_fail (session_shell_backend, NULL);
-
- return e_shell_backend_get_config_dir (session_shell_backend);
+ return mail_config_dir;
}