diff options
author | Jeffrey Stedfast <fejj@helixcode.com> | 2000-06-23 05:51:40 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2000-06-23 05:51:40 +0800 |
commit | a7f40b2f5ff709b9c0d3f5f487cdba6d6d3aa7b6 (patch) | |
tree | 75750e85f0fda73840a9c95971fe754ab3dc35f3 /camel/providers/imap/camel-imap-provider.c | |
parent | 4e9d56a6c03ee7ba65bb4cdd4fc4e7690f5e9c8c (diff) | |
download | gsoc2013-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.c | 58 |
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; +} |