summaryrefslogtreecommitdiffabout
path: root/kmicromail/libetpan/generic/nntpdriver_cached.c
Unidiff
Diffstat (limited to 'kmicromail/libetpan/generic/nntpdriver_cached.c') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/libetpan/generic/nntpdriver_cached.c10
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,
75static int nntpdriver_cached_logout(mailsession * session); 75static int nntpdriver_cached_logout(mailsession * session);
76 76
77static int nntpdriver_cached_check_folder(mailsession * session); 77static int nntpdriver_cached_check_folder(mailsession * session);
78 78
79static int nntpdriver_cached_select_folder(mailsession * session, char * mb); 79static int nntpdriver_cached_select_folder(mailsession * session, char * mb);
80 80
81static int nntpdriver_cached_status_folder(mailsession * session, 81static 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
87static int nntpdriver_cached_messages_number(mailsession * session, char * mb, 87static int nntpdriver_cached_messages_number(mailsession * session, char * mb,
88 uint32_t * result); 88 uint32_t * result);
89 89
90static int nntpdriver_cached_recent_number(mailsession * session, char * mb, 90static int nntpdriver_cached_recent_number(mailsession * session, char * mb,
91 uint32_t * result); 91 uint32_t * result);
92 92
93static int nntpdriver_cached_unseen_number(mailsession * session, char * mb, 93static int nntpdriver_cached_unseen_number(mailsession * session, char * mb,
94 uint32_t * result); 94 uint32_t * result);
95 95
96static int nntpdriver_cached_append_message(mailsession * session, 96static int nntpdriver_cached_append_message(mailsession * session,
97 char * message, size_t size); 97 char * message, size_t size);
98 98
99static int nntpdriver_cached_append_message_flags(mailsession * session,
100 char * message, size_t size, struct mail_flags * flags);
101
99static int 102static int
100nntpdriver_cached_get_envelopes_list(mailsession * session, 103nntpdriver_cached_get_envelopes_list(mailsession * session,
101 struct mailmessage_list * env_list); 104 struct mailmessage_list * env_list);
102 105
103 106
104static int 107static int
105nntpdriver_cached_get_messages_list(mailsession * session, 108nntpdriver_cached_get_messages_list(mailsession * session,
106 struct mailmessage_list ** result); 109 struct mailmessage_list ** result);
107 110
108static int nntpdriver_cached_list_folders(mailsession * session, char * mb, 111static int nntpdriver_cached_list_folders(mailsession * session, char * mb,
109 struct mail_list ** result); 112 struct mail_list ** result);
110 113
111static int nntpdriver_cached_lsub_folders(mailsession * session, char * mb, 114static int nntpdriver_cached_lsub_folders(mailsession * session, char * mb,
112 struct mail_list ** result); 115 struct mail_list ** result);
113 116
114static int nntpdriver_cached_subscribe_folder(mailsession * session, 117static int nntpdriver_cached_subscribe_folder(mailsession * session,
115 char * mb); 118 char * mb);
116 119
117static int nntpdriver_cached_unsubscribe_folder(mailsession * session, 120static int nntpdriver_cached_unsubscribe_folder(mailsession * session,
118 char * mb); 121 char * mb);
119 122
120static int nntpdriver_cached_get_message(mailsession * session, 123static 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
177mailsession_driver * nntp_cached_session_driver = 181mailsession_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
185static void read_article_seq(mailsession * session, 189static void read_article_seq(mailsession * session,
@@ -610,48 +614,54 @@ static int nntpdriver_cached_lsub_folders(mailsession * session, char * mb,
610} 614}
611 615
612static int nntpdriver_cached_subscribe_folder(mailsession * session, 616static 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
618static int nntpdriver_cached_unsubscribe_folder(mailsession * session, 622static 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
628static int nntpdriver_cached_append_message(mailsession * session, 632static 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
638static 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
636static int 646static int
637get_cached_envelope(struct mail_cache_db * cache_db, MMAPString * mmapstr, 647get_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