}
parser = mail_search_parser_init_imap(args);
- ret = mail_search_build(mail_search_register_get_imap(),
+ ret = mail_search_build(mail_search_register_get_imap4rev1(),
parser, &charset, &sargs, &client_error);
mail_search_parser_deinit(&parser);
if (ret < 0) {
{
if (mail_search_register_human == NULL) {
struct mail_search_register *imap_reg =
- mail_search_register_get_imap();
+ mail_search_register_get_imap4rev1();
mail_search_register_human =
mail_search_register_init_human(imap_reg);
#include "mail-search-build.h"
#include "mail-search-mime-build.h"
-struct mail_search_register *mail_search_register_imap;
+struct mail_search_register *mail_search_register_imap4rev2;
+struct mail_search_register *mail_search_register_imap4rev1;
static struct mail_search_arg *
imap_search_fallback(struct mail_search_build_context *ctx,
{ "X-REAL-UID", imap_search_x_real_uid, 0 }
};
-static struct mail_search_register *mail_search_register_init_imap(void)
+static struct mail_search_register
+*mail_search_register_init_imap(enum mail_search_register_arg_flags flags)
{
struct mail_search_register *reg;
reg = mail_search_register_init();
- mail_search_register_add(reg, imap_register_args,
- N_ELEMENTS(imap_register_args));
+ for (unsigned int i = 0; i < N_ELEMENTS(imap_register_args); i++) {
+ if (HAS_ALL_BITS(flags, imap_register_args[i].flags))
+ mail_search_register_add(reg, &imap_register_args[i], 1);
+ }
mail_search_register_fallback(reg, imap_search_fallback);
return reg;
}
+static struct mail_search_register *mail_search_register_init_imap4rev2(void)
+{
+ return mail_search_register_init_imap(0);
+}
+
+static struct mail_search_register *mail_search_register_init_imap4rev1(void)
+{
+ return mail_search_register_init_imap(MAIL_SEARCH_REGISTER_IMAP4REV1);
+}
+
+struct mail_search_register *
+mail_search_register_get_imap4rev2(void)
+{
+ if (mail_search_register_imap4rev2 == NULL)
+ mail_search_register_imap4rev2 = mail_search_register_init_imap4rev2();
+ return mail_search_register_imap4rev2;
+}
+
struct mail_search_register *
-mail_search_register_get_imap(void)
+mail_search_register_get_imap4rev1(void)
{
- if (mail_search_register_imap == NULL)
- mail_search_register_imap = mail_search_register_init_imap();
- return mail_search_register_imap;
+ if (mail_search_register_imap4rev1 == NULL)
+ mail_search_register_imap4rev1 = mail_search_register_init_imap4rev1();
+ return mail_search_register_imap4rev1;
}
bool mail_search_register_get_fallback(struct mail_search_register *reg,
mail_search_register_fallback_t **fallback_r);
-struct mail_search_register *mail_search_register_get_imap(void);
+struct mail_search_register *mail_search_register_get_imap4rev1(void);
+struct mail_search_register *mail_search_register_get_imap4rev2(void);
struct mail_search_register *mail_search_register_get_human(void);
#endif
#define MAILBOX_DELETE_RETRY_SECS 30
#define MAILBOX_MAX_HIERARCHY_NAME_LENGTH 255
-extern struct mail_search_register *mail_search_register_imap;
+extern struct mail_search_register *mail_search_register_imap4rev2;
+extern struct mail_search_register *mail_search_register_imap4rev1;
extern struct mail_search_register *mail_search_register_human;
struct event_category event_category_storage = {
return;
if (mail_search_register_human != NULL)
mail_search_register_deinit(&mail_search_register_human);
- if (mail_search_register_imap != NULL)
- mail_search_register_deinit(&mail_search_register_imap);
+ if (mail_search_register_imap4rev1 != NULL)
+ mail_search_register_deinit(&mail_search_register_imap4rev1);
+ if (mail_search_register_imap4rev2 != NULL)
+ mail_search_register_deinit(&mail_search_register_imap4rev2);
mail_search_mime_register_deinit();
if (array_is_created(&mail_storage_classes))
array_free(&mail_storage_classes);
const char *error, *charset = "UTF-8";
parser = mail_search_parser_init_cmdline(t_strsplit(args, " "));
- if (mail_search_build(mail_search_register_get_imap(),
+ if (mail_search_build(mail_search_register_get_imap4rev1(),
parser, &charset, &sargs, &error) < 0)
i_panic("%s", error);
mail_search_parser_deinit(&parser);
const char *error, *charset = "UTF-8";
parser = mail_search_parser_init_cmdline(t_strsplit(args, " "));
- if (mail_search_build(mail_search_register_get_imap(),
+ if (mail_search_build(mail_search_register_get_imap4rev1(),
parser, &charset, &sargs, &error) < 0)
i_panic("%s", error);
mail_search_parser_deinit(&parser);
*error_r = t_strdup(imap_parser_get_error(imap_parser, NULL));
} else {
parser = mail_search_parser_init_imap(args);
- if (mail_search_build(mail_search_register_get_imap(),
+ if (mail_search_build(mail_search_register_get_imap4rev1(),
parser, &charset, &sargs, error_r) < 0)
sargs = NULL;
mail_search_parser_deinit(&parser);