Mercurial > dovecot > core-2.2
changeset 12600:ba3c0ee558f5
imapc: Added support for keywords.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 25 Jan 2011 17:15:54 +0200 |
parents | 513e6e0b27ed |
children | 1413a0fa9ae7 |
files | src/lib-storage/index/imapc/imapc-mailbox.c |
diffstat | 1 files changed, 16 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/imapc/imapc-mailbox.c Mon Jan 24 00:42:29 2011 +0200 +++ b/src/lib-storage/index/imapc/imapc-mailbox.c Tue Jan 25 17:15:54 2011 +0200 @@ -74,6 +74,7 @@ enum mail_flags flags; uint32_t uid, old_count; unsigned int i, j; + ARRAY_TYPE(const_string) keywords; bool seen_flags = FALSE; if (mbox == NULL || seq == 0 || !imap_arg_get_list(reply->args, &list)) @@ -92,12 +93,17 @@ if (!imap_arg_get_list(&list[i+1], &flags_list)) return; + t_array_init(&keywords, 8); seen_flags = TRUE; for (j = 0; flags_list[j].type != IMAP_ARG_EOL; j++) { if (!imap_arg_get_atom(&flags_list[j], &atom)) return; if (atom[0] == '\\') flags |= imap_parse_system_flag(atom); + else { + /* keyword */ + array_append(&keywords, &atom, 1); + } } } } @@ -123,6 +129,16 @@ mail_index_update_flags(mbox->delayed_sync_trans, seq, MODIFY_REPLACE, flags); } + if (seen_flags) { + struct mail_keywords *kw; + + (void)array_append_space(&keywords); + kw = mail_index_keywords_create(mbox->box.index, + array_idx(&keywords, 0)); + mail_index_update_keywords(mbox->delayed_sync_trans, seq, + MODIFY_REPLACE, kw); + mail_index_keywords_unref(&kw); + } imapc_mailbox_idle_notify(mbox); }