aboutsummaryrefslogtreecommitdiffstats
path: root/camel
diff options
context:
space:
mode:
Diffstat (limited to 'camel')
-rw-r--r--camel/camel-provider.c45
-rw-r--r--camel/camel-session.c6
-rw-r--r--camel/camel-session.h2
-rw-r--r--camel/camel-store.c5
-rw-r--r--camel/camel-store.h2
5 files changed, 33 insertions, 27 deletions
diff --git a/camel/camel-provider.c b/camel/camel-provider.c
index 98c43bd7ce..79b9dfd97d 100644
--- a/camel/camel-provider.c
+++ b/camel/camel-provider.c
@@ -118,6 +118,7 @@ camel_provider_register_as_module (const gchar *module_path)
new_provider = camel_provider_module_init();
new_provider->gmodule = new_module;
+ camel_provider_register (new_provider);
CAMEL_LOG_FULL_DEBUG ("Leaving CamelProvider::register_as_module\n");
return new_provider;
@@ -148,7 +149,7 @@ _provider_protocol_find (gconstpointer a, gconstpointer b)
*
* Look into the list of registered provider if
* one correspond both to the protocol name
- * and to the protocol type. When several providerss
+ * and to the protocol type. When several providers
* exist for a same protocol, the last registered
* is returned.
*
@@ -157,27 +158,27 @@ _provider_protocol_find (gconstpointer a, gconstpointer b)
const CamelProvider *
camel_provider_get_for_protocol (const gchar *protocol, ProviderType type)
{
- GList *found_provider_node;
- CamelProvider *found_provider = NULL;
-
+ CamelProvider *current_provider = NULL;
+ GList *current_provider_node;
+ gboolean protocol_is_found;
+ gboolean provider_is_found;
+
g_assert (protocol);
g_return_val_if_fail (_provider_list, NULL);
-
- /* we've got a compilation warning here because of bad prototype of
- g_list_find_custom (), don't worry about that */
- do {
- found_provider_node = g_list_find_custom (_provider_list, (gconstpointer)protocol, _provider_name_cmp);
- /* we will get the last registered provider
- here because providers are registered
- using g_list_prepend(). This is a bit
- dangerous however because we rely on
- the way g_list_find_custom() is implemented.
- This should be changed one day */
- if (found_provider_node)
- found_provider = (CamelProvider*)found_provider_node->data;
- else found_provider = NULL;
- }
- while (found_provider && (found_provider->provider_type != type));
-
- return found_provider;
+
+ current_provider_node = _provider_list;
+ provider_is_found = FALSE;
+
+ while ((!provider_is_found) && current_provider_node) {
+ current_provider = (CamelProvider *)current_provider_node->data;
+
+ protocol_is_found = (g_strcasecmp (protocol, current_provider->protocol) == 0);
+ if (protocol_is_found)
+ provider_is_found = (current_provider->provider_type == type);
+
+ g_list_next (current_provider_node);
+ }
+
+ if (provider_is_found) return current_provider;
+ else return NULL;
}
diff --git a/camel/camel-session.c b/camel/camel-session.c
index a32ff510a4..20f0462368 100644
--- a/camel/camel-session.c
+++ b/camel/camel-session.c
@@ -79,6 +79,12 @@ camel_session_get_type (void)
}
+CamelSession *
+camel_session_new ()
+{
+ return gtk_type_new (CAMEL_SESSION_TYPE);
+}
+
/**
* camel_session_set_provider: set the default provider for a protocol
* @session: session object for wich the provider will the default
diff --git a/camel/camel-session.h b/camel/camel-session.h
index 9bec37851a..3435f3b604 100644
--- a/camel/camel-session.h
+++ b/camel/camel-session.h
@@ -71,7 +71,7 @@ typedef struct {
GtkType camel_session_get_type (void);
-
+CamelSession *camel_session_new ();
void camel_session_set_provider (CamelSession *session, CamelProvider *provider);
CamelStore *camel_session_get_store_for_protocol (CamelSession *session, const gchar *protocol);
CamelStore *camel_session_get_store (CamelSession *session, const gchar *url_string);
diff --git a/camel/camel-store.c b/camel/camel-store.c
index 209a03d101..8b3a05d624 100644
--- a/camel/camel-store.c
+++ b/camel/camel-store.c
@@ -125,10 +125,9 @@ _init (CamelStore *store, CamelSession *session, const gchar *url_name)
{
#warning re-enable assertion here.
- /* g_assert(session); */
+ g_assert(session);
g_assert(url_name);
- if (store->session) gtk_object_unref (GTK_OBJECT (store->session));
store->session = session;
gtk_object_ref (GTK_OBJECT (session));
/*store->url_name = url_name;*/
@@ -141,7 +140,7 @@ _finalize (GtkObject *object)
CamelStore *camel_store = CAMEL_STORE (object);
CAMEL_LOG_FULL_DEBUG ("Entering CamelStore::finalize\n");
- if (camel_store->url_name) g_free (camel_store->url_name);
+ /* if (camel_store->url_name) g_free (camel_store->url_name); */
if (camel_store->session) gtk_object_unref (GTK_OBJECT (camel_store->session));
GTK_OBJECT_CLASS (parent_class)->finalize (object);
diff --git a/camel/camel-store.h b/camel/camel-store.h
index 9634e9d0e7..8ad5bc8d9d 100644
--- a/camel/camel-store.h
+++ b/camel/camel-store.h
@@ -50,7 +50,7 @@ struct _CamelStore
CamelService parent_object;
CamelSession *session;
- gchar *url_name;
+ /* gchar *url_name; */
gchar separator;
};