diff options
author | Milan Crha <mcrha@redhat.com> | 2011-05-05 19:22:46 +0800 |
---|---|---|
committer | Rodrigo Moya <rodrigo@gnome-db.org> | 2011-06-30 00:42:07 +0800 |
commit | b1f79dd8d6b78a009a5edd5dfc1597fa2bad7875 (patch) | |
tree | 5b3ea70e1baaa75ce822d57788647d81a10fefa8 | |
parent | 00c7a23306327cdd0b2001dde736bf8bec2f6138 (diff) | |
download | gsoc2013-evolution-b1f79dd8d6b78a009a5edd5dfc1597fa2bad7875.tar.gz gsoc2013-evolution-b1f79dd8d6b78a009a5edd5dfc1597fa2bad7875.tar.zst gsoc2013-evolution-b1f79dd8d6b78a009a5edd5dfc1597fa2bad7875.zip |
Bug #627952 - 'Local delivery' mbox's aren't read properly
-rw-r--r-- | mail/e-mail-store.c | 20 | ||||
-rw-r--r-- | mail/em-utils.c | 2 |
2 files changed, 15 insertions, 7 deletions
diff --git a/mail/e-mail-store.c b/mail/e-mail-store.c index 65bcbc822b..6313640f93 100644 --- a/mail/e-mail-store.c +++ b/mail/e-mail-store.c @@ -248,17 +248,24 @@ mail_store_load_accounts (EMailSession *session, if (!account->enabled) continue; - /* Do not add local-delivery files. */ + /* Do not add local-delivery files, but make them ready for later use. */ url = camel_url_new (account->source->url, NULL); if (url != NULL) { skip = em_utils_is_local_delivery_mbox_file (url); camel_url_free (url); } - if (skip) - continue; + if (skip) { + GError *error = NULL; - e_mail_store_add_by_account (session, account); + if (!camel_session_add_service (CAMEL_SESSION (session), account->uid, account->source->url, CAMEL_PROVIDER_STORE, &error)) { + g_warning ("%s: Failed to add '%s' as store: %s", G_STRFUNC, account->source->url, error ? error->message : "Unknown error"); + if (error) + g_error_free (error); + } + } else { + e_mail_store_add_by_account (session, account); + } /* While we're at it, add the account's transport to the * CamelSession. The transport's UID is a kludge for now. @@ -359,8 +366,9 @@ fail: /* FIXME: Show an error dialog. */ g_warning ( "Couldn't get service: %s: %s", account->name, - error->message); - g_error_free (error); + error ? error->message : "Not a CamelStore"); + if (error) + g_error_free (error); return NULL; } diff --git a/mail/em-utils.c b/mail/em-utils.c index 9b21fda7ad..c20649c782 100644 --- a/mail/em-utils.c +++ b/mail/em-utils.c @@ -2443,7 +2443,7 @@ em_utils_is_local_delivery_mbox_file (CamelURL *url) { g_return_val_if_fail (url != NULL, FALSE); - return g_str_has_prefix (url->protocol, "mbox:") && + return g_str_equal (url->protocol, "mbox") && (url->path != NULL) && g_file_test (url->path, G_FILE_TEST_EXISTS) && !g_file_test (url->path, G_FILE_TEST_IS_DIR); |