aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/imap/camel-imap-provider.c
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@helixcode.com>2000-06-23 05:51:40 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2000-06-23 05:51:40 +0800
commita7f40b2f5ff709b9c0d3f5f487cdba6d6d3aa7b6 (patch)
tree75750e85f0fda73840a9c95971fe754ab3dc35f3 /camel/providers/imap/camel-imap-provider.c
parent4e9d56a6c03ee7ba65bb4cdd4fc4e7690f5e9c8c (diff)
downloadgsoc2013-evolution-a7f40b2f5ff709b9c0d3f5f487cdba6d6d3aa7b6.tar
gsoc2013-evolution-a7f40b2f5ff709b9c0d3f5f487cdba6d6d3aa7b6.tar.gz
gsoc2013-evolution-a7f40b2f5ff709b9c0d3f5f487cdba6d6d3aa7b6.tar.bz2
gsoc2013-evolution-a7f40b2f5ff709b9c0d3f5f487cdba6d6d3aa7b6.tar.lz
gsoc2013-evolution-a7f40b2f5ff709b9c0d3f5f487cdba6d6d3aa7b6.tar.xz
gsoc2013-evolution-a7f40b2f5ff709b9c0d3f5f487cdba6d6d3aa7b6.tar.zst
gsoc2013-evolution-a7f40b2f5ff709b9c0d3f5f487cdba6d6d3aa7b6.zip
Updated
2000-06-22 Jeffrey Stedfast <fejj@helixcode.com> * providers/sendmail/camel-sendmail-provider.c: * providers/vee/camel-vee-provider.c: * providers/smtp/camel-smtp-provider.c: * providers/mbox/camel-mbox-provider.c: * providers/pop3/camel-pop3-provider.c: * providers/imap/camel-imap-provider.c: Updated * camel-session.c: Moved service_cache hash table into the providers. (service_cache_remove): Updated. (camel_session_get_service): Updated. * camel-url.c (camel_url_hash): Took out the hashing of url->passwd. We don't want this anymore. * providers/imap/camel-imap-folder.c (imap_init): Took out references to 'namespace' (camel_imap_folder_init): Same * providers/imap/camel-imap-folder.h: No more namespace. We are instead going to use url->path as the namespace. svn path=/trunk/; revision=3700
Diffstat (limited to 'camel/providers/imap/camel-imap-provider.c')
-rw-r--r--camel/providers/imap/camel-imap-provider.c58
1 files changed, 57 insertions, 1 deletions
diff --git a/camel/providers/imap/camel-imap-provider.c b/camel/providers/imap/camel-imap-provider.c
index 0dbfd3f50c..b9d8c74847 100644
--- a/camel/providers/imap/camel-imap-provider.c
+++ b/camel/providers/imap/camel-imap-provider.c
@@ -27,6 +27,12 @@
#include "camel-imap-store.h"
#include "camel-provider.h"
#include "camel-session.h"
+#include "camel-url.h"
+
+static void add_hash (guint *hash, char *s);
+static guint imap_url_hash (gconstpointer key);
+static gint check_equal (char *s1, char *s2);
+static gint imap_url_equal (gconstpointer a, gconstpointer b);
static CamelProvider imap_provider = {
"imap",
@@ -38,7 +44,9 @@ static CamelProvider imap_provider = {
0,
- { 0, 0 }
+ { 0, 0 },
+
+ NULL
};
void
@@ -47,7 +55,55 @@ camel_provider_module_init (CamelSession *session)
imap_provider.object_types[CAMEL_PROVIDER_STORE] =
camel_imap_store_get_type();
+ imap_provider.service_cache = g_hash_table_new (imap_url_hash, imap_url_equal);
+
camel_session_register_provider (session, &imap_provider);
}
+static void
+add_hash (guint *hash, char *s)
+{
+ if (s)
+ *hash ^= g_str_hash(s);
+}
+
+static guint
+imap_url_hash (gconstpointer key)
+{
+ const CamelURL *u = (CamelURL *)key;
+ guint hash = 0;
+ add_hash (&hash, u->user);
+ add_hash (&hash, u->authmech);
+ add_hash (&hash, u->host);
+ hash ^= u->port;
+
+ return hash;
+}
+
+static gint
+check_equal (char *s1, char *s2)
+{
+ if (s1 == NULL) {
+ if (s2 == NULL)
+ return TRUE;
+ else
+ return FALSE;
+ }
+
+ if (s2 == NULL)
+ return FALSE;
+
+ return strcmp (s1, s2) == 0;
+}
+
+static gint
+imap_url_equal (gconstpointer a, gconstpointer b)
+{
+ const CamelURL *u1 = a, *u2 = b;
+
+ return check_equal (u1->user, u2->user)
+ && check_equal (u1->authmech, u2->authmech)
+ && check_equal (u1->host, u2->host)
+ && u1->port == u2->port;
+}