Diffstat (limited to 'kmicromail/libetpan/generic/imapdriver_cached.c') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kmicromail/libetpan/generic/imapdriver_cached.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/kmicromail/libetpan/generic/imapdriver_cached.c b/kmicromail/libetpan/generic/imapdriver_cached.c index e6af8e8..04044ae 100644 --- a/kmicromail/libetpan/generic/imapdriver_cached.c +++ b/kmicromail/libetpan/generic/imapdriver_cached.c | |||
@@ -84,48 +84,50 @@ static int imapdriver_cached_examine_folder(mailsession * session, | |||
84 | char * mb); | 84 | char * mb); |
85 | static int imapdriver_cached_select_folder(mailsession * session, char * mb); | 85 | static int imapdriver_cached_select_folder(mailsession * session, char * mb); |
86 | static int imapdriver_cached_expunge_folder(mailsession * session); | 86 | static int imapdriver_cached_expunge_folder(mailsession * session); |
87 | static int imapdriver_cached_status_folder(mailsession * session, char * mb, | 87 | static int imapdriver_cached_status_folder(mailsession * session, char * mb, |
88 | uint32_t * result_messages, | 88 | uint32_t * result_messages, |
89 | uint32_t * result_recent, | 89 | uint32_t * result_recent, |
90 | uint32_t * result_unseen); | 90 | uint32_t * result_unseen); |
91 | static int imapdriver_cached_messages_number(mailsession * session, | 91 | static int imapdriver_cached_messages_number(mailsession * session, |
92 | char * mb, | 92 | char * mb, |
93 | uint32_t * result); | 93 | uint32_t * result); |
94 | static int imapdriver_cached_recent_number(mailsession * session, char * mb, | 94 | static int imapdriver_cached_recent_number(mailsession * session, char * mb, |
95 | uint32_t * result); | 95 | uint32_t * result); |
96 | static int imapdriver_cached_unseen_number(mailsession * session, char * mb, | 96 | static int imapdriver_cached_unseen_number(mailsession * session, char * mb, |
97 | uint32_t * result); | 97 | uint32_t * result); |
98 | static int imapdriver_cached_list_folders(mailsession * session, char * mb, | 98 | static int imapdriver_cached_list_folders(mailsession * session, char * mb, |
99 | struct mail_list ** result); | 99 | struct mail_list ** result); |
100 | static int imapdriver_cached_lsub_folders(mailsession * session, char * mb, | 100 | static int imapdriver_cached_lsub_folders(mailsession * session, char * mb, |
101 | struct mail_list ** result); | 101 | struct mail_list ** result); |
102 | static int imapdriver_cached_subscribe_folder(mailsession * session, | 102 | static int imapdriver_cached_subscribe_folder(mailsession * session, |
103 | char * mb); | 103 | char * mb); |
104 | static int imapdriver_cached_unsubscribe_folder(mailsession * session, | 104 | static int imapdriver_cached_unsubscribe_folder(mailsession * session, |
105 | char * mb); | 105 | char * mb); |
106 | static int imapdriver_cached_append_message(mailsession * session, | 106 | static int imapdriver_cached_append_message(mailsession * session, |
107 | char * message, size_t size); | 107 | char * message, size_t size); |
108 | static int imapdriver_cached_append_message_flags(mailsession * session, | ||
109 | char * message, size_t size, struct mail_flags * flags); | ||
108 | static int imapdriver_cached_copy_message(mailsession * session, | 110 | static int imapdriver_cached_copy_message(mailsession * session, |
109 | uint32_t num, char * mb); | 111 | uint32_t num, char * mb); |
110 | 112 | ||
111 | static int imapdriver_cached_get_messages_list(mailsession * session, | 113 | static int imapdriver_cached_get_messages_list(mailsession * session, |
112 | struct mailmessage_list ** | 114 | struct mailmessage_list ** |
113 | result); | 115 | result); |
114 | static int | 116 | static int |
115 | imapdriver_cached_get_envelopes_list(mailsession * session, | 117 | imapdriver_cached_get_envelopes_list(mailsession * session, |
116 | struct mailmessage_list * env_list); | 118 | struct mailmessage_list * env_list); |
117 | static int imapdriver_cached_remove_message(mailsession * session, | 119 | static int imapdriver_cached_remove_message(mailsession * session, |
118 | uint32_t num); | 120 | uint32_t num); |
119 | 121 | ||
120 | #if 0 | 122 | #if 0 |
121 | static int imapdriver_cached_search_messages(mailsession * session, | 123 | static int imapdriver_cached_search_messages(mailsession * session, |
122 | char * charset, | 124 | char * charset, |
123 | struct mail_search_key * key, | 125 | struct mail_search_key * key, |
124 | struct mail_search_result ** | 126 | struct mail_search_result ** |
125 | result); | 127 | result); |
126 | #endif | 128 | #endif |
127 | 129 | ||
128 | static int imapdriver_cached_get_message(mailsession * session, | 130 | static int imapdriver_cached_get_message(mailsession * session, |
129 | uint32_t num, mailmessage ** result); | 131 | uint32_t num, mailmessage ** result); |
130 | 132 | ||
131 | static int imapdriver_cached_get_message_by_uid(mailsession * session, | 133 | static int imapdriver_cached_get_message_by_uid(mailsession * session, |
@@ -144,48 +146,49 @@ static mailsession_driver local_imap_cached_session_driver = { | |||
144 | .sess_connect_path = NULL, | 146 | .sess_connect_path = NULL, |
145 | .sess_starttls = imapdriver_cached_starttls, | 147 | .sess_starttls = imapdriver_cached_starttls, |
146 | .sess_login = imapdriver_cached_login, | 148 | .sess_login = imapdriver_cached_login, |
147 | .sess_logout = imapdriver_cached_logout, | 149 | .sess_logout = imapdriver_cached_logout, |
148 | .sess_noop = imapdriver_cached_noop, | 150 | .sess_noop = imapdriver_cached_noop, |
149 | 151 | ||
150 | .sess_build_folder_name = imapdriver_cached_build_folder_name, | 152 | .sess_build_folder_name = imapdriver_cached_build_folder_name, |
151 | .sess_create_folder = imapdriver_cached_create_folder, | 153 | .sess_create_folder = imapdriver_cached_create_folder, |
152 | .sess_delete_folder = imapdriver_cached_delete_folder, | 154 | .sess_delete_folder = imapdriver_cached_delete_folder, |
153 | .sess_rename_folder = imapdriver_cached_rename_folder, | 155 | .sess_rename_folder = imapdriver_cached_rename_folder, |
154 | .sess_check_folder = imapdriver_cached_check_folder, | 156 | .sess_check_folder = imapdriver_cached_check_folder, |
155 | .sess_examine_folder = imapdriver_cached_examine_folder, | 157 | .sess_examine_folder = imapdriver_cached_examine_folder, |
156 | .sess_select_folder = imapdriver_cached_select_folder, | 158 | .sess_select_folder = imapdriver_cached_select_folder, |
157 | .sess_expunge_folder = imapdriver_cached_expunge_folder, | 159 | .sess_expunge_folder = imapdriver_cached_expunge_folder, |
158 | .sess_status_folder = imapdriver_cached_status_folder, | 160 | .sess_status_folder = imapdriver_cached_status_folder, |
159 | .sess_messages_number = imapdriver_cached_messages_number, | 161 | .sess_messages_number = imapdriver_cached_messages_number, |
160 | .sess_recent_number = imapdriver_cached_recent_number, | 162 | .sess_recent_number = imapdriver_cached_recent_number, |
161 | .sess_unseen_number = imapdriver_cached_unseen_number, | 163 | .sess_unseen_number = imapdriver_cached_unseen_number, |
162 | .sess_list_folders = imapdriver_cached_list_folders, | 164 | .sess_list_folders = imapdriver_cached_list_folders, |
163 | .sess_lsub_folders = imapdriver_cached_lsub_folders, | 165 | .sess_lsub_folders = imapdriver_cached_lsub_folders, |
164 | .sess_subscribe_folder = imapdriver_cached_subscribe_folder, | 166 | .sess_subscribe_folder = imapdriver_cached_subscribe_folder, |
165 | .sess_unsubscribe_folder = imapdriver_cached_unsubscribe_folder, | 167 | .sess_unsubscribe_folder = imapdriver_cached_unsubscribe_folder, |
166 | 168 | ||
167 | .sess_append_message = imapdriver_cached_append_message, | 169 | .sess_append_message = imapdriver_cached_append_message, |
170 | .sess_append_message_flags = imapdriver_cached_append_message_flags, | ||
168 | .sess_copy_message = imapdriver_cached_copy_message, | 171 | .sess_copy_message = imapdriver_cached_copy_message, |
169 | .sess_move_message = NULL, | 172 | .sess_move_message = NULL, |
170 | 173 | ||
171 | .sess_get_messages_list = imapdriver_cached_get_messages_list, | 174 | .sess_get_messages_list = imapdriver_cached_get_messages_list, |
172 | .sess_get_envelopes_list = imapdriver_cached_get_envelopes_list, | 175 | .sess_get_envelopes_list = imapdriver_cached_get_envelopes_list, |
173 | .sess_remove_message = imapdriver_cached_remove_message, | 176 | .sess_remove_message = imapdriver_cached_remove_message, |
174 | #if 0 | 177 | #if 0 |
175 | .sess_search_messages = imapdriver_cached_search_messages, | 178 | .sess_search_messages = imapdriver_cached_search_messages, |
176 | #endif | 179 | #endif |
177 | 180 | ||
178 | .sess_get_message = imapdriver_cached_get_message, | 181 | .sess_get_message = imapdriver_cached_get_message, |
179 | .sess_get_message_by_uid = imapdriver_cached_get_message_by_uid, | 182 | .sess_get_message_by_uid = imapdriver_cached_get_message_by_uid, |
180 | }; | 183 | }; |
181 | 184 | ||
182 | mailsession_driver * imap_cached_session_driver = | 185 | mailsession_driver * imap_cached_session_driver = |
183 | &local_imap_cached_session_driver; | 186 | &local_imap_cached_session_driver; |
184 | 187 | ||
185 | #define CACHE_MESSAGE_LIST | 188 | #define CACHE_MESSAGE_LIST |
186 | 189 | ||
187 | static inline struct imap_cached_session_state_data * | 190 | static inline struct imap_cached_session_state_data * |
188 | get_cached_data(mailsession * session) | 191 | get_cached_data(mailsession * session) |
189 | { | 192 | { |
190 | return session->sess_data; | 193 | return session->sess_data; |
191 | } | 194 | } |
@@ -755,48 +758,61 @@ static int imapdriver_cached_subscribe_folder(mailsession * session, | |||
755 | static int imapdriver_cached_unsubscribe_folder(mailsession * session, | 758 | static int imapdriver_cached_unsubscribe_folder(mailsession * session, |
756 | char * mb) | 759 | char * mb) |
757 | { | 760 | { |
758 | int r; | 761 | int r; |
759 | 762 | ||
760 | r = mailsession_unsubscribe_folder(get_ancestor(session), mb); | 763 | r = mailsession_unsubscribe_folder(get_ancestor(session), mb); |
761 | 764 | ||
762 | check_for_uid_cache(session); | 765 | check_for_uid_cache(session); |
763 | 766 | ||
764 | return r; | 767 | return r; |
765 | } | 768 | } |
766 | 769 | ||
767 | static int imapdriver_cached_append_message(mailsession * session, | 770 | static int imapdriver_cached_append_message(mailsession * session, |
768 | char * message, size_t size) | 771 | char * message, size_t size) |
769 | { | 772 | { |
770 | int r; | 773 | int r; |
771 | 774 | ||
772 | r = mailsession_append_message(get_ancestor(session), message, size); | 775 | r = mailsession_append_message(get_ancestor(session), message, size); |
773 | 776 | ||
774 | check_for_uid_cache(session); | 777 | check_for_uid_cache(session); |
775 | 778 | ||
776 | return r; | 779 | return r; |
777 | } | 780 | } |
778 | 781 | ||
782 | static int imapdriver_cached_append_message_flags(mailsession * session, | ||
783 | char * message, size_t size, struct mail_flags * flags) | ||
784 | { | ||
785 | int r; | ||
786 | |||
787 | r = mailsession_append_message_flags(get_ancestor(session), | ||
788 | message, size, flags); | ||
789 | |||
790 | check_for_uid_cache(session); | ||
791 | |||
792 | return r; | ||
793 | } | ||
794 | |||
779 | static int imapdriver_cached_copy_message(mailsession * session, | 795 | static int imapdriver_cached_copy_message(mailsession * session, |
780 | uint32_t num, char * mb) | 796 | uint32_t num, char * mb) |
781 | { | 797 | { |
782 | int r; | 798 | int r; |
783 | 799 | ||
784 | r = mailsession_copy_message(get_ancestor(session), num, mb); | 800 | r = mailsession_copy_message(get_ancestor(session), num, mb); |
785 | 801 | ||
786 | check_for_uid_cache(session); | 802 | check_for_uid_cache(session); |
787 | 803 | ||
788 | return r; | 804 | return r; |
789 | } | 805 | } |
790 | 806 | ||
791 | static int cmp_uid(uint32_t ** pa, uint32_t ** pb) | 807 | static int cmp_uid(uint32_t ** pa, uint32_t ** pb) |
792 | { | 808 | { |
793 | uint32_t * a; | 809 | uint32_t * a; |
794 | uint32_t * b; | 810 | uint32_t * b; |
795 | 811 | ||
796 | a = * pa; | 812 | a = * pa; |
797 | b = * pb; | 813 | b = * pb; |
798 | 814 | ||
799 | return * a - * b; | 815 | return * a - * b; |
800 | } | 816 | } |
801 | 817 | ||
802 | 818 | ||