diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2001-03-15 09:59:00 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2001-03-15 09:59:00 +0800 |
commit | 2da82ca26261d3772c9c54d28c3195a7735f169f (patch) | |
tree | ba9fa339381859790d0dcbd9405792bbbea02c8a /camel/camel-provider.c | |
parent | 005d8c98c33702f8ef47c94e2d7aa22bbceb1ed3 (diff) | |
download | gsoc2013-evolution-2da82ca26261d3772c9c54d28c3195a7735f169f.tar.gz gsoc2013-evolution-2da82ca26261d3772c9c54d28c3195a7735f169f.tar.zst gsoc2013-evolution-2da82ca26261d3772c9c54d28c3195a7735f169f.zip |
So it turns out that NSS_Init *isn't* idempotent, so we have to protect
2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
* camel.c (camel_init): So it turns out that NSS_Init *isn't*
idempotent, so we have to protect against initializing it more
than once(contrary to what their design specs suggest).
* camel-session.c (camel_session_get_service): Use
camel_exception_is_set() - Makes no difference but it's more
consistant with how we normally do it.
* camel-provider.h (CAMEL_URL_ALLOW_SSL): We don't need this.
* providers/imap/camel-imap-provider.c: Define the imaps provider.
(camel_provider_module_init): Register the imaps provider.
* camel-provider.c (camel_provider_init): Only add the protocol to
the hash table if it's non empty. Also, g_strdup() the filename
into the hash table.
* providers/imap/camel-imap-store.c (camel_imap_store_init): Eek!
So the service's URL isn't set until after this is
initialized. This means we can't check for SSL here.
(imap_connect): Set the SSL options here instead.
svn path=/trunk/; revision=8718
Diffstat (limited to 'camel/camel-provider.c')
-rw-r--r-- | camel/camel-provider.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/camel/camel-provider.c b/camel/camel-provider.c index 03be7cdf1e..4549445842 100644 --- a/camel/camel-provider.c +++ b/camel/camel-provider.c @@ -61,8 +61,7 @@ camel_provider_init (void) DIR *dir; struct dirent *d; char *p, *name, buf[80]; - FILE *f; - + providers = g_hash_table_new (g_strcase_hash, g_strcase_equal); dir = opendir (CAMEL_PROVIDERDIR); @@ -73,30 +72,35 @@ camel_provider_init (void) } while ((d = readdir (dir))) { + FILE *fp; + p = strchr (d->d_name, '.'); if (!p || strcmp (p, ".urls") != 0) continue; name = g_strdup_printf ("%s/%s", CAMEL_PROVIDERDIR, d->d_name); - f = fopen (name, "r"); - if (!f) { + fp = fopen (name, "r"); + if (!fp) { g_warning ("Could not read provider info file %s: %s", name, g_strerror (errno)); g_free (name); continue; } - + p = strrchr (name, '.'); strcpy (p, ".so"); - while ((fgets (buf, sizeof (buf), f))) { + while ((fgets (buf, sizeof (buf), fp))) { buf[sizeof (buf) - 1] = '\0'; p = strchr (buf, '\n'); if (p) *p = '\0'; - - g_hash_table_insert (providers, g_strdup (buf), name); + + if (*buf) + g_hash_table_insert (providers, g_strdup (buf), g_strdup (name)); } - fclose (f); + + g_free (name); + fclose (fp); } closedir (dir); |