From 164e9bd79aa67ed8434703ad79efc84db71251b8 Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Thu, 19 Mar 2020 01:19:32 +0100 Subject: [PATCH] lib-storage: mail-search - Add support for the SAVEDATESUPPORTED search item. --- src/lib-storage/index/imapc/imapc-search.c | 1 + src/lib-storage/index/index-search.c | 11 +++++++++++ src/lib-storage/mail-search-args-cmdline.c | 1 + src/lib-storage/mail-search-args-imap.c | 3 +++ src/lib-storage/mail-search.c | 2 ++ src/lib-storage/mail-search.h | 1 + 6 files changed, 19 insertions(+) diff --git a/src/lib-storage/index/imapc/imapc-search.c b/src/lib-storage/index/imapc/imapc-search.c index 4985e8eaba..b776ae4212 100644 --- a/src/lib-storage/index/imapc/imapc-search.c +++ b/src/lib-storage/index/imapc/imapc-search.c @@ -125,6 +125,7 @@ imapc_build_search_query_arg(struct imapc_mailbox *mbox, if ((mbox->capabilities & IMAPC_CAPABILITY_CONDSTORE) == 0) return FALSE; return mail_search_arg_to_imap(str, arg, &error); + case SEARCH_SAVEDATESUPPORTED: case SEARCH_INTHREAD: case SEARCH_GUID: case SEARCH_MAILBOX: diff --git a/src/lib-storage/index/index-search.c b/src/lib-storage/index/index-search.c index 7d4b90b4eb..2ddfa0e132 100644 --- a/src/lib-storage/index/index-search.c +++ b/src/lib-storage/index/index-search.c @@ -334,6 +334,7 @@ static int search_arg_match_cached(struct index_search_context *ctx, time_t date; int tz_offset; bool have_tz_offset; + int ret; switch (arg->type) { /* internal dates */ @@ -384,6 +385,15 @@ static int search_arg_match_cached(struct index_search_context *ctx, i_unreached(); } + /* save date attribute */ + case SEARCH_SAVEDATESUPPORTED: + ret = mail_get_save_date(ctx->cur_mail, &date); + if (ret < 0) { + search_cur_mail_failed(ctx); + return -1; + } + return ret; + /* sizes */ case SEARCH_SMALLER: case SEARCH_LARGER: @@ -1435,6 +1445,7 @@ static bool search_arg_is_static(struct mail_search_arg *arg) case SEARCH_HEADER_COMPRESS_LWSP: case SEARCH_BODY: case SEARCH_TEXT: + case SEARCH_SAVEDATESUPPORTED: case SEARCH_GUID: case SEARCH_MAILBOX: case SEARCH_MAILBOX_GUID: diff --git a/src/lib-storage/mail-search-args-cmdline.c b/src/lib-storage/mail-search-args-cmdline.c index 304c19f0a7..5b1c47fbae 100644 --- a/src/lib-storage/mail-search-args-cmdline.c +++ b/src/lib-storage/mail-search-args-cmdline.c @@ -81,6 +81,7 @@ mail_search_arg_to_cmdline(string_t *dest, const struct mail_search_arg *arg) case SEARCH_BODY: case SEARCH_TEXT: case SEARCH_MODSEQ: + case SEARCH_SAVEDATESUPPORTED: case SEARCH_GUID: case SEARCH_REAL_UID: case SEARCH_MIMEPART: diff --git a/src/lib-storage/mail-search-args-imap.c b/src/lib-storage/mail-search-args-imap.c index 8dd14f5af3..da5d45325d 100644 --- a/src/lib-storage/mail-search-args-imap.c +++ b/src/lib-storage/mail-search-args-imap.c @@ -272,6 +272,9 @@ bool mail_search_arg_to_imap(string_t *dest, const struct mail_search_arg *arg, str_printfa(dest, "%"PRIu64, arg->value.modseq->modseq); break; } + case SEARCH_SAVEDATESUPPORTED: + str_append(dest, "SAVEDATESUPPORTED"); + break; case SEARCH_INTHREAD: str_append(dest, "INTHREAD "); imap_append_astring(dest, mail_thread_type_to_str(arg->value.thread_type)); diff --git a/src/lib-storage/mail-search.c b/src/lib-storage/mail-search.c index f38926781c..85ef23802f 100644 --- a/src/lib-storage/mail-search.c +++ b/src/lib-storage/mail-search.c @@ -297,6 +297,7 @@ mail_search_arg_dup_one(pool_t pool, const struct mail_search_arg *arg) mail_search_arg_dup(pool, arg->value.subargs); break; case SEARCH_ALL: + case SEARCH_SAVEDATESUPPORTED: break; case SEARCH_SEQSET: case SEARCH_UIDSET: @@ -624,6 +625,7 @@ bool mail_search_arg_one_equals(const struct mail_search_arg *arg1, arg2->value.subargs); case SEARCH_ALL: + case SEARCH_SAVEDATESUPPORTED: return TRUE; case SEARCH_SEQSET: /* sequences may point to different messages at different times, diff --git a/src/lib-storage/mail-search.h b/src/lib-storage/mail-search.h index c1493aacbf..1966b7ce67 100644 --- a/src/lib-storage/mail-search.h +++ b/src/lib-storage/mail-search.h @@ -40,6 +40,7 @@ enum mail_search_arg_type { /* extensions */ SEARCH_MODSEQ, + SEARCH_SAVEDATESUPPORTED, SEARCH_INTHREAD, SEARCH_GUID, SEARCH_MAILBOX, -- 2.47.3