]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Deprecate IMAP4rev1 mail_search_register_args for IMAP4rev2
authorMarkus Valentin <markus.valentin@open-xchange.com>
Thu, 8 May 2025 10:57:54 +0000 (12:57 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 12 May 2025 10:40:58 +0000 (10:40 +0000)
Also introduce mail_search_register_get_imap4rev2() and
mail_search_register_get_imap4rev1().

src/imap/imap-search-args.c
src/lib-storage/mail-search-register-human.c
src/lib-storage/mail-search-register-imap.c
src/lib-storage/mail-search-register.h
src/lib-storage/mail-storage.c
src/lib-storage/test-mail-search-args-imap.c
src/lib-storage/test-mail-search-args-simplify.c
src/plugins/virtual/virtual-config.c

index a7e9db0b50f676204bdb3f3fc69686d6bd0d5834..df73a70c84c076f537e3413635d869907a1bf97c 100644 (file)
@@ -58,7 +58,7 @@ int imap_search_args_build(struct client_command_context *cmd,
        }
 
        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) {
index 7400111e8e2c7230c31dc70e2f94d69007937116..dcde6a549aeb6937139ad10b89667f40ea1d7b22 100644 (file)
@@ -223,7 +223,7 @@ struct mail_search_register *mail_search_register_get_human(void)
 {
        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);
index cf6db101ec0052a5ce4c29cc31c2e6c947b21893..5a9a46b1eeb4579bae0da9190423c6c08ad2e696 100644 (file)
@@ -14,7 +14,8 @@
 #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,
@@ -617,21 +618,42 @@ static const struct mail_search_register_arg imap_register_args[] = {
        { "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;
 }
index 11840fc87764c690f3d45e5a8a8f3940871c8cca..27648ffdc14cbfda26e3d701fabe892d0c07dab0 100644 (file)
@@ -45,7 +45,8 @@ mail_search_register_find(struct mail_search_register *reg, const char *key);
 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
index ca51ab5d13a44f592c4d961838ca3d4e55539811..751e8325028a3dafec551a38978ad6497f33b5e8 100644 (file)
@@ -42,7 +42,8 @@
 #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 = {
@@ -103,8 +104,10 @@ void mail_storage_deinit(void)
                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);
index c6cda9c41ca599238cae800230d63a10cb0411fa..13c34a52d49d12939865325d230cc2e5a2864755 100644 (file)
@@ -137,7 +137,7 @@ test_build_search_args(const char *args)
        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);
index dcde23665b4011ffebb507b473db6a9afb69c4c8..545ddb48df7d65a0025a37c9957c434abdb3e5fe 100644 (file)
@@ -239,7 +239,7 @@ test_build_search_args(const char *args)
        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);
index 44e024b0f19f42cd8ace132d226046fd70fb88f4..a23c459bed15424bc084b8c1788a97367fade5aa 100644 (file)
@@ -61,7 +61,7 @@ virtual_search_args_parse(const string_t *rule, const char **error_r)
                *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);