Diffstat (limited to 'kmicromail/libetpan/generic/imapdriver.c') (more/less context) (show whitespace changes)
-rw-r--r-- | kmicromail/libetpan/generic/imapdriver.c | 28 |
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 | |||
@@ -99,8 +99,10 @@ static int imapdriver_lsub_folders(mailsession * session, char * mb, | |||
99 | static int imapdriver_subscribe_folder(mailsession * session, char * mb); | 99 | static int imapdriver_subscribe_folder(mailsession * session, char * mb); |
100 | static int imapdriver_unsubscribe_folder(mailsession * session, char * mb); | 100 | static int imapdriver_unsubscribe_folder(mailsession * session, char * mb); |
101 | static int imapdriver_append_message(mailsession * session, | 101 | static int imapdriver_append_message(mailsession * session, |
102 | char * message, size_t size); | 102 | char * message, size_t size); |
103 | static int imapdriver_append_message_flags(mailsession * session, | ||
104 | char * message, size_t size, struct mail_flags * flags); | ||
103 | static int imapdriver_copy_message(mailsession * session, | 105 | static int imapdriver_copy_message(mailsession * session, |
104 | uint32_t num, char * mb); | 106 | uint32_t num, char * mb); |
105 | 107 | ||
106 | static int imapdriver_get_messages_list(mailsession * session, | 108 | static int imapdriver_get_messages_list(mailsession * session, |
@@ -156,8 +158,9 @@ static mailsession_driver local_imap_session_driver = { | |||
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, |
@@ -770,8 +773,33 @@ static int imapdriver_append_message(mailsession * session, | |||
770 | 773 | ||
771 | return imap_error_to_mail_error(r); | 774 | return imap_error_to_mail_error(r); |
772 | } | 775 | } |
773 | 776 | ||
777 | static 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 | |||
774 | static int imapdriver_copy_message(mailsession * session, | 802 | static 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; |