aboutsummaryrefslogtreecommitdiffstats
path: root/mail/component-factory.c
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2001-10-02 03:45:39 +0800
committerDan Winship <danw@src.gnome.org>2001-10-02 03:45:39 +0800
commit8d3a2ebd284bbcde524a40054970c03ef7e07426 (patch)
treee4fd6a50b33358afe5cd7d77de97a4398b117e3d /mail/component-factory.c
parenta9decdd87985fd66f202aa118d5e81d774734420 (diff)
downloadgsoc2013-evolution-8d3a2ebd284bbcde524a40054970c03ef7e07426.tar
gsoc2013-evolution-8d3a2ebd284bbcde524a40054970c03ef7e07426.tar.gz
gsoc2013-evolution-8d3a2ebd284bbcde524a40054970c03ef7e07426.tar.bz2
gsoc2013-evolution-8d3a2ebd284bbcde524a40054970c03ef7e07426.tar.lz
gsoc2013-evolution-8d3a2ebd284bbcde524a40054970c03ef7e07426.tar.xz
gsoc2013-evolution-8d3a2ebd284bbcde524a40054970c03ef7e07426.tar.zst
gsoc2013-evolution-8d3a2ebd284bbcde524a40054970c03ef7e07426.zip
create storages for providers that are STORAGE and aren't EXTERNAL, rather
* component-factory.c (mail_load_storage_by_uri): create storages for providers that are STORAGE and aren't EXTERNAL, rather than "(STORAGE and REMOTE) or spool, maildir, or vfolder". (mail_remove_storage_by_uri): Use the same rule here (which makes it possible now to remove maildir and spool stores now, which weren't properly special-cased before). Remove some CamelException misuse. * mail-config.c (new_source_created): Fix up the broken INBOX- shortcut-generating assumption a little by only assuming that if you call camel_store_get_inbox(), that its full_name is the same as its path. (This happens to always be true for inboxes now, and will be always true by definition at some point in the future.) Now maildir stores get working Inbox shortcuts. * mail-send-recv.c (get_receive_type): If PROVIDER_IS_STORAGE then use SEND_UPDATE, if not, use SEND_RECEIVE. * mail-local.c (local_provider): The local provider is EXTERNAL. (The shell creates it.) (mail_local_reconfigure_folder): Allow reconfiguring between IS_LOCAL providers. * mail-accounts.c (news_delete): Don't need to check the provider flags here... we know nntp is a STORAGE. svn path=/trunk/; revision=13277
Diffstat (limited to 'mail/component-factory.c')
-rw-r--r--mail/component-factory.c50
1 files changed, 16 insertions, 34 deletions
diff --git a/mail/component-factory.c b/mail/component-factory.c
index 4bb72ff0ed..9cf5cf47e2 100644
--- a/mail/component-factory.c
+++ b/mail/component-factory.c
@@ -1056,20 +1056,9 @@ mail_load_storage_by_uri (GNOME_Evolution_Shell shell, const char *uri, const ch
camel_exception_clear (&ex);
return;
}
-
- /* FIXME: this case is ambiguous for things like the
- * mbox provider, which can really be a spool
- * (/var/spool/mail/user) or a storage (~/mail/, eg).
- * That issue can't be resolved on the provider level
- * -- it's a per-URL problem.
- * MPZ Added a hack to let spool protocol through temporarily ...
- * And vfolder, and maildir ...
- */
- if ((!(prov->flags & CAMEL_PROVIDER_IS_STORAGE) ||
- !(prov->flags & CAMEL_PROVIDER_IS_REMOTE))
- && !((strcmp (prov->protocol, "spool") == 0)
- || (strcmp (prov->protocol, "maildir") == 0)
- || (strcmp (prov->protocol, "vfolder") == 0)))
+
+ if (!(prov->flags & CAMEL_PROVIDER_IS_STORAGE) ||
+ (prov->flags & CAMEL_PROVIDER_IS_EXTERNAL))
return;
store = camel_session_get_service (session, uri, CAMEL_PROVIDER_STORE, &ex);
@@ -1189,27 +1178,20 @@ void
mail_remove_storage_by_uri (const char *uri)
{
CamelProvider *prov;
- CamelException ex;
-
- camel_exception_init (&ex);
- prov = camel_session_get_provider (session, uri, &ex);
- if (prov != NULL && prov->flags & CAMEL_PROVIDER_IS_STORAGE &&
- prov->flags & CAMEL_PROVIDER_IS_REMOTE) {
- CamelService *store;
-
- store = camel_session_get_service (session, uri,
- CAMEL_PROVIDER_STORE, &ex);
- if (store != NULL) {
- g_warning ("removing storage: %s", uri);
- mail_remove_storage (CAMEL_STORE (store));
- camel_object_unref (CAMEL_OBJECT (store));
- }
- } else {
- /* why make the caller redundantly check this? */
- /*g_warning ("%s is not a remote storage.", uri);*/
- }
+ CamelService *store;
- camel_exception_clear (&ex);
+ prov = camel_session_get_provider (session, uri, NULL);
+ if (!prov)
+ return;
+ if (!(prov->flags & CAMEL_PROVIDER_IS_STORAGE) ||
+ (prov->flags & CAMEL_PROVIDER_IS_EXTERNAL))
+ return;
+
+ store = camel_session_get_service (session, uri, CAMEL_PROVIDER_STORE, NULL);
+ if (store != NULL) {
+ mail_remove_storage (CAMEL_STORE (store));
+ camel_object_unref (CAMEL_OBJECT (store));
+ }
}
int