aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
Diffstat (limited to 'mail')
-rw-r--r--mail/session.c67
1 files changed, 67 insertions, 0 deletions
diff --git a/mail/session.c b/mail/session.c
new file mode 100644
index 0000000000..24197951f3
--- /dev/null
+++ b/mail/session.c
@@ -0,0 +1,67 @@
+/*
+ * session.c: handles the session infomration and resource manipulation
+ *
+ * Author:
+ * Miguel de Icaza (miguel@gnu.org)
+ *
+ * (C) 2000 Helix Code, Inc. http://www.helixcode.com
+ */
+#include <config.h>
+#include "session.h"
+#include "e-util/e-setup.h"
+#include "camel/camel.h"
+
+SessionStore *default_session;
+
+static void
+session_providers_init (void)
+{
+ camel_provider_register_as_module (CAMEL_PROVIDERDIR "/libcamelmbox.so");
+}
+
+SessionStore *
+session_store_new (const char *uri)
+{
+ SessionStore *ss = g_new (SessionStore, 1);
+
+ ss->session = camel_session_new ();
+ ss->store = camel_session_get_store (ss->session, uri);
+
+ g_assert (ss->session);
+ g_assert (ss->store);
+
+ return ss;
+}
+
+void
+session_store_destroy (SessionStore *ss)
+{
+ g_assert (ss != NULL);
+
+ gtk_object_unref (GTK_OBJECT (ss->store));
+ gtk_object_unref (GTK_OBJECT (ss->session));
+
+ g_free (ss);
+}
+
+static void
+init_default_session (void)
+{
+ char *url;
+
+ url = g_strconcat ("mbox://", evolution_folders_dir, NULL);
+ default_session = session_store_new (url);
+ g_free (url);
+}
+
+void
+session_init (void)
+{
+ e_setup_base_dir ();
+ camel_init ();
+ session_providers_init ();
+
+ init_default_session ();
+}
+
+