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:
time_t date;
int tz_offset;
bool have_tz_offset;
+ int ret;
switch (arg->type) {
/* internal dates */
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:
case SEARCH_HEADER_COMPRESS_LWSP:
case SEARCH_BODY:
case SEARCH_TEXT:
+ case SEARCH_SAVEDATESUPPORTED:
case SEARCH_GUID:
case SEARCH_MAILBOX:
case SEARCH_MAILBOX_GUID:
case SEARCH_BODY:
case SEARCH_TEXT:
case SEARCH_MODSEQ:
+ case SEARCH_SAVEDATESUPPORTED:
case SEARCH_GUID:
case SEARCH_REAL_UID:
case SEARCH_MIMEPART:
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));
mail_search_arg_dup(pool, arg->value.subargs);
break;
case SEARCH_ALL:
+ case SEARCH_SAVEDATESUPPORTED:
break;
case SEARCH_SEQSET:
case SEARCH_UIDSET:
arg2->value.subargs);
case SEARCH_ALL:
+ case SEARCH_SAVEDATESUPPORTED:
return TRUE;
case SEARCH_SEQSET:
/* sequences may point to different messages at different times,
/* extensions */
SEARCH_MODSEQ,
+ SEARCH_SAVEDATESUPPORTED,
SEARCH_INTHREAD,
SEARCH_GUID,
SEARCH_MAILBOX,