]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: mail-search - Add support for the SAVEDATESUPPORTED search item.
authorStephan Bosch <stephan.bosch@open-xchange.com>
Thu, 19 Mar 2020 00:19:32 +0000 (01:19 +0100)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Sun, 5 Apr 2020 21:31:34 +0000 (21:31 +0000)
src/lib-storage/index/imapc/imapc-search.c
src/lib-storage/index/index-search.c
src/lib-storage/mail-search-args-cmdline.c
src/lib-storage/mail-search-args-imap.c
src/lib-storage/mail-search.c
src/lib-storage/mail-search.h

index 4985e8eababdc9aec88fd1f29a1d5c1e4350d3ed..b776ae4212955a3ebad998c06d04daec3d8ae918 100644 (file)
@@ -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:
index 7d4b90b4ebcb8d0d0d893758ab20ff30ed41a77a..2ddfa0e1324bd31b29227255ca1b07ece055e3eb 100644 (file)
@@ -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:
index 304c19f0a7aa49b930d4a783a2ead647e2476932..5b1c47fbaeb82d76437d9cba352ed4a419d156bc 100644 (file)
@@ -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:
index 8dd14f5af34866a0eed0cf113f2b7bbb427dae57..da5d45325df7c57e496d2ab0d216cb49908d1723 100644 (file)
@@ -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));
index f38926781c590c888407b27c5eebbbd8e097a86c..85ef23802f7a26be8469335d34f3a539c4531812 100644 (file)
@@ -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,
index c1493aacbfb73e6c4511b42d4fe90b2df7da4e3a..1966b7ce67b5eef144697aed5473ba64546d0263 100644 (file)
@@ -40,6 +40,7 @@ enum mail_search_arg_type {
 
        /* extensions */
        SEARCH_MODSEQ,
+       SEARCH_SAVEDATESUPPORTED,
        SEARCH_INTHREAD,
        SEARCH_GUID,
        SEARCH_MAILBOX,