summaryrefslogtreecommitdiffabout
path: root/kmicromail/libetpan/generic/nntpdriver_cached.c
Side-by-side diff
Diffstat (limited to 'kmicromail/libetpan/generic/nntpdriver_cached.c') (more/less context) (show 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,
static int nntpdriver_cached_logout(mailsession * session);
static int nntpdriver_cached_check_folder(mailsession * session);
static int nntpdriver_cached_select_folder(mailsession * session, char * mb);
static int nntpdriver_cached_status_folder(mailsession * session,
char * mb,
uint32_t * result_messages,
uint32_t * result_recent,
uint32_t * result_unseen);
static int nntpdriver_cached_messages_number(mailsession * session, char * mb,
uint32_t * result);
static int nntpdriver_cached_recent_number(mailsession * session, char * mb,
uint32_t * result);
static int nntpdriver_cached_unseen_number(mailsession * session, char * mb,
uint32_t * result);
static int nntpdriver_cached_append_message(mailsession * session,
char * message, size_t size);
+static int nntpdriver_cached_append_message_flags(mailsession * session,
+ char * message, size_t size, struct mail_flags * flags);
+
static int
nntpdriver_cached_get_envelopes_list(mailsession * session,
struct mailmessage_list * env_list);
static int
nntpdriver_cached_get_messages_list(mailsession * session,
struct mailmessage_list ** result);
static int nntpdriver_cached_list_folders(mailsession * session, char * mb,
struct mail_list ** result);
static int nntpdriver_cached_lsub_folders(mailsession * session, char * mb,
struct mail_list ** result);
static int nntpdriver_cached_subscribe_folder(mailsession * session,
char * mb);
static int nntpdriver_cached_unsubscribe_folder(mailsession * session,
char * mb);
static int nntpdriver_cached_get_message(mailsession * session,
uint32_t num, mailmessage ** result);
@@ -138,48 +141,49 @@ static mailsession_driver local_nntp_cached_session_driver = {
.sess_connect_path = NULL,
.sess_starttls = NULL,
.sess_login = nntpdriver_cached_login,
.sess_logout = nntpdriver_cached_logout,
.sess_noop = nntpdriver_cached_noop,
.sess_build_folder_name = NULL,
.sess_create_folder = NULL,
.sess_delete_folder = NULL,
.sess_rename_folder = NULL,
.sess_check_folder = nntpdriver_cached_check_folder,
.sess_examine_folder = NULL,
.sess_select_folder = nntpdriver_cached_select_folder,
.sess_expunge_folder = NULL,
.sess_status_folder = nntpdriver_cached_status_folder,
.sess_messages_number = nntpdriver_cached_messages_number,
.sess_recent_number = nntpdriver_cached_recent_number,
.sess_unseen_number = nntpdriver_cached_unseen_number,
.sess_list_folders = nntpdriver_cached_list_folders,
.sess_lsub_folders = nntpdriver_cached_lsub_folders,
.sess_subscribe_folder = nntpdriver_cached_subscribe_folder,
.sess_unsubscribe_folder = nntpdriver_cached_unsubscribe_folder,
.sess_append_message = nntpdriver_cached_append_message,
+ .sess_append_message_flags = nntpdriver_cached_append_message_flags,
.sess_copy_message = NULL,
.sess_move_message = NULL,
.sess_get_messages_list = nntpdriver_cached_get_messages_list,
.sess_get_envelopes_list = nntpdriver_cached_get_envelopes_list,
.sess_remove_message = NULL,
#if 0
.sess_search_messages = maildriver_generic_search_messages,
#endif
.sess_get_message = nntpdriver_cached_get_message,
.sess_get_message_by_uid = nntpdriver_cached_get_message_by_uid,
};
mailsession_driver * nntp_cached_session_driver =
&local_nntp_cached_session_driver;
#define ENV_NAME "env.db"
#define FLAGS_NAME "flags.db"
static void read_article_seq(mailsession * session,
@@ -610,48 +614,54 @@ static int nntpdriver_cached_lsub_folders(mailsession * session, char * mb,
}
static int nntpdriver_cached_subscribe_folder(mailsession * session,
char * mb)
{
return mailsession_subscribe_folder(get_ancestor(session), mb);
}
static int nntpdriver_cached_unsubscribe_folder(mailsession * session,
char * mb)
{
return mailsession_unsubscribe_folder(get_ancestor(session), mb);
}
/* messages operations */
static int nntpdriver_cached_append_message(mailsession * session,
char * message, size_t size)
{
return mailsession_append_message(get_ancestor(session), message, size);
}
+static int nntpdriver_cached_append_message_flags(mailsession * session,
+ char * message, size_t size, struct mail_flags * flags)
+{
+ return nntpdriver_cached_append_message(session, message, size);
+}
+
static int
get_cached_envelope(struct mail_cache_db * cache_db, MMAPString * mmapstr,
mailsession * session, uint32_t num,
struct mailimf_fields ** result)
{
char keyname[PATH_MAX];
int r;
struct mailimf_fields * fields;
int res;
snprintf(keyname, PATH_MAX, "%i-envelope", num);
r = generic_cache_fields_read(cache_db, mmapstr, keyname, &fields);
if (r != MAIL_NO_ERROR) {
res = r;
goto err;
}
* result = fields;
return MAIL_NO_ERROR;