Diffstat (limited to 'kmicromail/libetpan/generic/nntpdriver_cached.c') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kmicromail/libetpan/generic/nntpdriver_cached.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/kmicromail/libetpan/generic/nntpdriver_cached.c b/kmicromail/libetpan/generic/nntpdriver_cached.c index 1f8a8af..0343a65 100644 --- a/kmicromail/libetpan/generic/nntpdriver_cached.c +++ b/kmicromail/libetpan/generic/nntpdriver_cached.c | |||
@@ -75,48 +75,51 @@ static int nntpdriver_cached_login(mailsession * session, | |||
75 | static int nntpdriver_cached_logout(mailsession * session); | 75 | static int nntpdriver_cached_logout(mailsession * session); |
76 | 76 | ||
77 | static int nntpdriver_cached_check_folder(mailsession * session); | 77 | static int nntpdriver_cached_check_folder(mailsession * session); |
78 | 78 | ||
79 | static int nntpdriver_cached_select_folder(mailsession * session, char * mb); | 79 | static int nntpdriver_cached_select_folder(mailsession * session, char * mb); |
80 | 80 | ||
81 | static int nntpdriver_cached_status_folder(mailsession * session, | 81 | static int nntpdriver_cached_status_folder(mailsession * session, |
82 | char * mb, | 82 | char * mb, |
83 | uint32_t * result_messages, | 83 | uint32_t * result_messages, |
84 | uint32_t * result_recent, | 84 | uint32_t * result_recent, |
85 | uint32_t * result_unseen); | 85 | uint32_t * result_unseen); |
86 | 86 | ||
87 | static int nntpdriver_cached_messages_number(mailsession * session, char * mb, | 87 | static int nntpdriver_cached_messages_number(mailsession * session, char * mb, |
88 | uint32_t * result); | 88 | uint32_t * result); |
89 | 89 | ||
90 | static int nntpdriver_cached_recent_number(mailsession * session, char * mb, | 90 | static int nntpdriver_cached_recent_number(mailsession * session, char * mb, |
91 | uint32_t * result); | 91 | uint32_t * result); |
92 | 92 | ||
93 | static int nntpdriver_cached_unseen_number(mailsession * session, char * mb, | 93 | static int nntpdriver_cached_unseen_number(mailsession * session, char * mb, |
94 | uint32_t * result); | 94 | uint32_t * result); |
95 | 95 | ||
96 | static int nntpdriver_cached_append_message(mailsession * session, | 96 | static int nntpdriver_cached_append_message(mailsession * session, |
97 | char * message, size_t size); | 97 | char * message, size_t size); |
98 | 98 | ||
99 | static int nntpdriver_cached_append_message_flags(mailsession * session, | ||
100 | char * message, size_t size, struct mail_flags * flags); | ||
101 | |||
99 | static int | 102 | static int |
100 | nntpdriver_cached_get_envelopes_list(mailsession * session, | 103 | nntpdriver_cached_get_envelopes_list(mailsession * session, |
101 | struct mailmessage_list * env_list); | 104 | struct mailmessage_list * env_list); |
102 | 105 | ||
103 | 106 | ||
104 | static int | 107 | static int |
105 | nntpdriver_cached_get_messages_list(mailsession * session, | 108 | nntpdriver_cached_get_messages_list(mailsession * session, |
106 | struct mailmessage_list ** result); | 109 | struct mailmessage_list ** result); |
107 | 110 | ||
108 | static int nntpdriver_cached_list_folders(mailsession * session, char * mb, | 111 | static int nntpdriver_cached_list_folders(mailsession * session, char * mb, |
109 | struct mail_list ** result); | 112 | struct mail_list ** result); |
110 | 113 | ||
111 | static int nntpdriver_cached_lsub_folders(mailsession * session, char * mb, | 114 | static int nntpdriver_cached_lsub_folders(mailsession * session, char * mb, |
112 | struct mail_list ** result); | 115 | struct mail_list ** result); |
113 | 116 | ||
114 | static int nntpdriver_cached_subscribe_folder(mailsession * session, | 117 | static int nntpdriver_cached_subscribe_folder(mailsession * session, |
115 | char * mb); | 118 | char * mb); |
116 | 119 | ||
117 | static int nntpdriver_cached_unsubscribe_folder(mailsession * session, | 120 | static int nntpdriver_cached_unsubscribe_folder(mailsession * session, |
118 | char * mb); | 121 | char * mb); |
119 | 122 | ||
120 | static int nntpdriver_cached_get_message(mailsession * session, | 123 | static int nntpdriver_cached_get_message(mailsession * session, |
121 | uint32_t num, mailmessage ** result); | 124 | uint32_t num, mailmessage ** result); |
122 | 125 | ||
@@ -138,48 +141,49 @@ static mailsession_driver local_nntp_cached_session_driver = { | |||
138 | .sess_connect_path = NULL, | 141 | .sess_connect_path = NULL, |
139 | .sess_starttls = NULL, | 142 | .sess_starttls = NULL, |
140 | .sess_login = nntpdriver_cached_login, | 143 | .sess_login = nntpdriver_cached_login, |
141 | .sess_logout = nntpdriver_cached_logout, | 144 | .sess_logout = nntpdriver_cached_logout, |
142 | .sess_noop = nntpdriver_cached_noop, | 145 | .sess_noop = nntpdriver_cached_noop, |
143 | 146 | ||
144 | .sess_build_folder_name = NULL, | 147 | .sess_build_folder_name = NULL, |
145 | .sess_create_folder = NULL, | 148 | .sess_create_folder = NULL, |
146 | .sess_delete_folder = NULL, | 149 | .sess_delete_folder = NULL, |
147 | .sess_rename_folder = NULL, | 150 | .sess_rename_folder = NULL, |
148 | .sess_check_folder = nntpdriver_cached_check_folder, | 151 | .sess_check_folder = nntpdriver_cached_check_folder, |
149 | .sess_examine_folder = NULL, | 152 | .sess_examine_folder = NULL, |
150 | .sess_select_folder = nntpdriver_cached_select_folder, | 153 | .sess_select_folder = nntpdriver_cached_select_folder, |
151 | .sess_expunge_folder = NULL, | 154 | .sess_expunge_folder = NULL, |
152 | .sess_status_folder = nntpdriver_cached_status_folder, | 155 | .sess_status_folder = nntpdriver_cached_status_folder, |
153 | .sess_messages_number = nntpdriver_cached_messages_number, | 156 | .sess_messages_number = nntpdriver_cached_messages_number, |
154 | .sess_recent_number = nntpdriver_cached_recent_number, | 157 | .sess_recent_number = nntpdriver_cached_recent_number, |
155 | .sess_unseen_number = nntpdriver_cached_unseen_number, | 158 | .sess_unseen_number = nntpdriver_cached_unseen_number, |
156 | .sess_list_folders = nntpdriver_cached_list_folders, | 159 | .sess_list_folders = nntpdriver_cached_list_folders, |
157 | .sess_lsub_folders = nntpdriver_cached_lsub_folders, | 160 | .sess_lsub_folders = nntpdriver_cached_lsub_folders, |
158 | .sess_subscribe_folder = nntpdriver_cached_subscribe_folder, | 161 | .sess_subscribe_folder = nntpdriver_cached_subscribe_folder, |
159 | .sess_unsubscribe_folder = nntpdriver_cached_unsubscribe_folder, | 162 | .sess_unsubscribe_folder = nntpdriver_cached_unsubscribe_folder, |
160 | 163 | ||
161 | .sess_append_message = nntpdriver_cached_append_message, | 164 | .sess_append_message = nntpdriver_cached_append_message, |
165 | .sess_append_message_flags = nntpdriver_cached_append_message_flags, | ||
162 | .sess_copy_message = NULL, | 166 | .sess_copy_message = NULL, |
163 | .sess_move_message = NULL, | 167 | .sess_move_message = NULL, |
164 | 168 | ||
165 | .sess_get_messages_list = nntpdriver_cached_get_messages_list, | 169 | .sess_get_messages_list = nntpdriver_cached_get_messages_list, |
166 | .sess_get_envelopes_list = nntpdriver_cached_get_envelopes_list, | 170 | .sess_get_envelopes_list = nntpdriver_cached_get_envelopes_list, |
167 | .sess_remove_message = NULL, | 171 | .sess_remove_message = NULL, |
168 | #if 0 | 172 | #if 0 |
169 | .sess_search_messages = maildriver_generic_search_messages, | 173 | .sess_search_messages = maildriver_generic_search_messages, |
170 | #endif | 174 | #endif |
171 | 175 | ||
172 | .sess_get_message = nntpdriver_cached_get_message, | 176 | .sess_get_message = nntpdriver_cached_get_message, |
173 | .sess_get_message_by_uid = nntpdriver_cached_get_message_by_uid, | 177 | .sess_get_message_by_uid = nntpdriver_cached_get_message_by_uid, |
174 | }; | 178 | }; |
175 | 179 | ||
176 | 180 | ||
177 | mailsession_driver * nntp_cached_session_driver = | 181 | mailsession_driver * nntp_cached_session_driver = |
178 | &local_nntp_cached_session_driver; | 182 | &local_nntp_cached_session_driver; |
179 | 183 | ||
180 | #define ENV_NAME "env.db" | 184 | #define ENV_NAME "env.db" |
181 | #define FLAGS_NAME "flags.db" | 185 | #define FLAGS_NAME "flags.db" |
182 | 186 | ||
183 | 187 | ||
184 | 188 | ||
185 | static void read_article_seq(mailsession * session, | 189 | static void read_article_seq(mailsession * session, |
@@ -610,48 +614,54 @@ static int nntpdriver_cached_lsub_folders(mailsession * session, char * mb, | |||
610 | } | 614 | } |
611 | 615 | ||
612 | static int nntpdriver_cached_subscribe_folder(mailsession * session, | 616 | static int nntpdriver_cached_subscribe_folder(mailsession * session, |
613 | char * mb) | 617 | char * mb) |
614 | { | 618 | { |
615 | return mailsession_subscribe_folder(get_ancestor(session), mb); | 619 | return mailsession_subscribe_folder(get_ancestor(session), mb); |
616 | } | 620 | } |
617 | 621 | ||
618 | static int nntpdriver_cached_unsubscribe_folder(mailsession * session, | 622 | static int nntpdriver_cached_unsubscribe_folder(mailsession * session, |
619 | char * mb) | 623 | char * mb) |
620 | { | 624 | { |
621 | return mailsession_unsubscribe_folder(get_ancestor(session), mb); | 625 | return mailsession_unsubscribe_folder(get_ancestor(session), mb); |
622 | } | 626 | } |
623 | 627 | ||
624 | 628 | ||
625 | 629 | ||
626 | /* messages operations */ | 630 | /* messages operations */ |
627 | 631 | ||
628 | static int nntpdriver_cached_append_message(mailsession * session, | 632 | static int nntpdriver_cached_append_message(mailsession * session, |
629 | char * message, size_t size) | 633 | char * message, size_t size) |
630 | { | 634 | { |
631 | return mailsession_append_message(get_ancestor(session), message, size); | 635 | return mailsession_append_message(get_ancestor(session), message, size); |
632 | } | 636 | } |
633 | 637 | ||
638 | static int nntpdriver_cached_append_message_flags(mailsession * session, | ||
639 | char * message, size_t size, struct mail_flags * flags) | ||
640 | { | ||
641 | return nntpdriver_cached_append_message(session, message, size); | ||
642 | } | ||
643 | |||
634 | 644 | ||
635 | 645 | ||
636 | static int | 646 | static int |
637 | get_cached_envelope(struct mail_cache_db * cache_db, MMAPString * mmapstr, | 647 | get_cached_envelope(struct mail_cache_db * cache_db, MMAPString * mmapstr, |
638 | mailsession * session, uint32_t num, | 648 | mailsession * session, uint32_t num, |
639 | struct mailimf_fields ** result) | 649 | struct mailimf_fields ** result) |
640 | { | 650 | { |
641 | char keyname[PATH_MAX]; | 651 | char keyname[PATH_MAX]; |
642 | int r; | 652 | int r; |
643 | struct mailimf_fields * fields; | 653 | struct mailimf_fields * fields; |
644 | int res; | 654 | int res; |
645 | 655 | ||
646 | snprintf(keyname, PATH_MAX, "%i-envelope", num); | 656 | snprintf(keyname, PATH_MAX, "%i-envelope", num); |
647 | 657 | ||
648 | r = generic_cache_fields_read(cache_db, mmapstr, keyname, &fields); | 658 | r = generic_cache_fields_read(cache_db, mmapstr, keyname, &fields); |
649 | if (r != MAIL_NO_ERROR) { | 659 | if (r != MAIL_NO_ERROR) { |
650 | res = r; | 660 | res = r; |
651 | goto err; | 661 | goto err; |
652 | } | 662 | } |
653 | 663 | ||
654 | * result = fields; | 664 | * result = fields; |
655 | 665 | ||
656 | return MAIL_NO_ERROR; | 666 | return MAIL_NO_ERROR; |
657 | 667 | ||