return ret;
}
+void imap_search_anyset_to_uidset(struct client_command_context *cmd,
+ struct mail_search_args *args)
+{
+ struct mail_search_arg *arg = args->args;
+
+ i_assert(arg->next == NULL);
+ switch (arg->type) {
+ case SEARCH_ALL:
+ if (arg->match_not)
+ break;
+ t_array_init(&arg->value.seqset, 1);
+ seq_range_array_add_range(&arg->value.seqset, 1, (uint32_t)-1);
+ /* fall through */
+ case SEARCH_SEQSET: {
+ ARRAY_TYPE(seq_range) seqs = arg->value.seqset;
+
+ arg->type = SEARCH_UIDSET;
+ p_array_init(&arg->value.seqset, args->pool, 16);
+ mailbox_get_uid_range(cmd->client->mailbox, &seqs,
+ &arg->value.seqset);
+ break;
+ }
+ case SEARCH_UIDSET:
+ break;
+ default:
+ i_unreached();
+ }
+}
+
static int imap_search_get_searchres(struct client_command_context *cmd,
struct mail_search_args **search_args_r)
{
int imap_search_get_seqset(struct client_command_context *cmd,
const char *set, bool uid,
struct mail_search_args **search_args_r);
+/* Convert search args returned by imap_search_get_anyset() to SEARCH_UIDSET. */
+void imap_search_anyset_to_uidset(struct client_command_context *cmd,
+ struct mail_search_args *args);
void imap_search_add_changed_since(struct mail_search_args *search_args,
uint64_t modseq);