summaryrefslogtreecommitdiffabout
path: root/kmicromail/libetpan/generic/imapdriver.c
Unidiff
Diffstat (limited to 'kmicromail/libetpan/generic/imapdriver.c') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/libetpan/generic/imapdriver.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/kmicromail/libetpan/generic/imapdriver.c b/kmicromail/libetpan/generic/imapdriver.c
index 0d63319..b3e5982 100644
--- a/kmicromail/libetpan/generic/imapdriver.c
+++ b/kmicromail/libetpan/generic/imapdriver.c
@@ -97,12 +97,14 @@ static int imapdriver_list_folders(mailsession * session, char * mb,
97static int imapdriver_lsub_folders(mailsession * session, char * mb, 97static int imapdriver_lsub_folders(mailsession * session, char * mb,
98 struct mail_list ** result); 98 struct mail_list ** result);
99static int imapdriver_subscribe_folder(mailsession * session, char * mb); 99static int imapdriver_subscribe_folder(mailsession * session, char * mb);
100static int imapdriver_unsubscribe_folder(mailsession * session, char * mb); 100static int imapdriver_unsubscribe_folder(mailsession * session, char * mb);
101static int imapdriver_append_message(mailsession * session, 101static int imapdriver_append_message(mailsession * session,
102 char * message, size_t size); 102 char * message, size_t size);
103static int imapdriver_append_message_flags(mailsession * session,
104 char * message, size_t size, struct mail_flags * flags);
103static int imapdriver_copy_message(mailsession * session, 105static int imapdriver_copy_message(mailsession * session,
104 uint32_t num, char * mb); 106 uint32_t num, char * mb);
105 107
106static int imapdriver_get_messages_list(mailsession * session, 108static int imapdriver_get_messages_list(mailsession * session,
107 struct mailmessage_list ** result); 109 struct mailmessage_list ** result);
108 110
@@ -154,12 +156,13 @@ static mailsession_driver local_imap_session_driver = {
154 .sess_list_folders = imapdriver_list_folders, 156 .sess_list_folders = imapdriver_list_folders,
155 .sess_lsub_folders = imapdriver_lsub_folders, 157 .sess_lsub_folders = imapdriver_lsub_folders,
156 .sess_subscribe_folder = imapdriver_subscribe_folder, 158 .sess_subscribe_folder = imapdriver_subscribe_folder,
157 .sess_unsubscribe_folder = imapdriver_unsubscribe_folder, 159 .sess_unsubscribe_folder = imapdriver_unsubscribe_folder,
158 160
159 .sess_append_message = imapdriver_append_message, 161 .sess_append_message = imapdriver_append_message,
162 .sess_append_message_flags = imapdriver_append_message_flags,
160 .sess_copy_message = imapdriver_copy_message, 163 .sess_copy_message = imapdriver_copy_message,
161 .sess_move_message = NULL, 164 .sess_move_message = NULL,
162 165
163 .sess_get_messages_list = imapdriver_get_messages_list, 166 .sess_get_messages_list = imapdriver_get_messages_list,
164 .sess_get_envelopes_list = imapdriver_get_envelopes_list, 167 .sess_get_envelopes_list = imapdriver_get_envelopes_list,
165 .sess_remove_message = NULL, 168 .sess_remove_message = NULL,
@@ -768,12 +771,37 @@ static int imapdriver_append_message(mailsession * session,
768 get_data(session)->imap_mailbox, 771 get_data(session)->imap_mailbox,
769 message, size); 772 message, size);
770 773
771 return imap_error_to_mail_error(r); 774 return imap_error_to_mail_error(r);
772} 775}
773 776
777static int imapdriver_append_message_flags(mailsession * session,
778 char * message, size_t size, struct mail_flags * flags)
779{
780 struct mailimap_flag_list * flag_list;
781 int r;
782
783 if (flags != NULL) {
784 r = imap_flags_to_imap_flags(flags, &flag_list);
785 if (r != MAIL_NO_ERROR)
786 return r;
787 }
788 else {
789 flag_list = NULL;
790 }
791
792 r = mailimap_append(get_imap_session(session),
793 get_data(session)->imap_mailbox,
794 flag_list, NULL, message, size);
795
796 if (flag_list != NULL)
797 mailimap_flag_list_free(flag_list);
798
799 return imap_error_to_mail_error(r);
800}
801
774static int imapdriver_copy_message(mailsession * session, 802static int imapdriver_copy_message(mailsession * session,
775 uint32_t num, char * mb) 803 uint32_t num, char * mb)
776{ 804{
777 int r; 805 int r;
778 struct mailimap_set * set; 806 struct mailimap_set * set;
779 int res; 807 int res;