[evolution-data-server/imap-notify: 17/23] CamelIMAPXFolder: Finish camel_imapx_folder_list_mailbox().
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/imap-notify: 17/23] CamelIMAPXFolder: Finish camel_imapx_folder_list_mailbox().
- Date: Tue, 10 Sep 2013 14:06:57 +0000 (UTC)
commit 04154c4233e1e5c6aaa9b4e443c4e4a316af430a
Author: Matthew Barnes <mbarnes redhat com>
Date: Wed Sep 4 12:45:44 2013 -0400
CamelIMAPXFolder: Finish camel_imapx_folder_list_mailbox().
Implement the part where we actually issue the LIST command.
camel/camel-imapx-folder.c | 26 +++++++++++++++++++++++++-
1 files changed, 25 insertions(+), 1 deletions(-)
---
diff --git a/camel/camel-imapx-folder.c b/camel/camel-imapx-folder.c
index 23b8286..10b6537 100644
--- a/camel/camel-imapx-folder.c
+++ b/camel/camel-imapx-folder.c
@@ -1423,6 +1423,8 @@ camel_imapx_folder_list_mailbox (CamelIMAPXFolder *folder,
CamelIMAPXStoreInfo *imapx_store_info;
gchar *folder_path = NULL;
gchar *mailbox_name = NULL;
+ gchar *pattern;
+ gboolean success;
g_return_val_if_fail (CAMEL_IS_IMAPX_FOLDER (folder), FALSE);
@@ -1467,7 +1469,29 @@ camel_imapx_folder_list_mailbox (CamelIMAPXFolder *folder,
/* Last resort is to issue a LIST command. Maintainer should
* monitor IMAP logs to make sure this is rarely if ever used. */
- g_warn_if_reached (); /* FIXME Implement this. */
+ pattern = camel_utf8_utf7 (mailbox_name);
+
+ /* This creates a mailbox instance from the LIST response. */
+ success = camel_imapx_server_list (
+ server, pattern, 0, cancellable, error);
+
+ g_free (pattern);
+
+ if (!success)
+ goto exit;
+
+ /* This might still return NULL if the mailbox has a
+ * /NonExistent attribute. Otherwise this should work. */
+ mailbox = camel_imapx_server_ref_mailbox (server, mailbox_name);
+ if (mailbox != NULL) {
+ camel_imapx_folder_set_mailbox (folder, mailbox);
+ } else {
+ g_set_error (
+ error, CAMEL_FOLDER_ERROR,
+ CAMEL_FOLDER_ERROR_INVALID_STATE,
+ _("No IMAP mailbox available for folder '%s'"),
+ camel_folder_get_display_name (CAMEL_FOLDER (folder)));
+ }
exit:
g_clear_object (&server);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]