]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts: storage - Add fts_settings to struct fts_user
authorMarco Bettini <marco.bettini@open-xchange.com>
Mon, 4 Dec 2023 14:56:17 +0000 (14:56 +0000)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:11 +0000 (12:34 +0200)
src/plugins/fts/fts-user.c
src/plugins/fts/fts-user.h

index 8aac625fdad27194ea4786ba79817145c05b58e0..5ae6e39ff3b871696b6510ad20f5a614f9169528 100644 (file)
@@ -10,6 +10,8 @@
 #include "lang-filter.h"
 #include "lang-tokenizer.h"
 #include "fts-user.h"
+#include "settings.h"
+#include "fts-settings.h"
 
 #define FTS_USER_CONTEXT(obj) \
        MODULE_CONTEXT(obj, fts_user_module)
@@ -18,6 +20,7 @@
 
 struct fts_user {
        union mail_user_module_context module_ctx;
+       const struct fts_settings *set;
        int refcount;
 
        struct language_list *lang_list;
@@ -343,6 +346,12 @@ struct fts_user_language *fts_user_get_data_lang(struct mail_user *user)
        return fuser->data_lang;
 }
 
+const struct fts_settings *fts_user_get_settings(struct mail_user *user)
+{
+       struct fts_user *fuser = FTS_USER_CONTEXT_REQUIRE(user);
+       return fuser->set;
+}
+
 bool fts_user_autoindex_exclude(struct mailbox *box)
 {
        struct fts_user *fuser = FTS_USER_CONTEXT_REQUIRE(box->storage->user);
@@ -371,7 +380,8 @@ static void fts_user_free(struct fts_user *fuser)
                array_foreach_elem(&fuser->languages, user_lang)
                        fts_user_language_free(user_lang);
        }
-       mailbox_match_plugin_deinit(&fuser->autoindex_exclude);
+
+       settings_free(fuser->set);
 }
 
 static int
@@ -405,7 +415,15 @@ int fts_mail_user_init(struct mail_user *user, bool initialize_libfts,
                return 0;
        }
 
+       const char *error;
+       const struct fts_settings *set;
+       if (settings_get(user->event, &fts_setting_parser_info, 0, &set, &error) < 0) {
+               e_error(user->event, "%s", error);
+               return -1;
+       }
+
        fuser = p_new(user->pool, struct fts_user, 1);
+       fuser->set = set;
        fuser->refcount = 1;
        if (initialize_libfts) {
                if (fts_mail_user_init_libfts(user, fuser, error_r) < 0) {
index 29dee8ab6ebac69d8b4f5b4e28c5959ca130701c..78f8657f3c5063acd3e5d95272c0909249965d8f 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef FTS_USER_H
 #define FTS_USER_H
 
+#include "fts-settings.h"
+
 struct fts_user_language {
        const struct language *lang;
        struct lang_filter *filter;
@@ -18,6 +20,8 @@ struct fts_user_language *fts_user_get_data_lang(struct mail_user *user);
 const ARRAY_TYPE(fts_user_language) *
 fts_user_get_data_languages(struct mail_user *user);
 
+const struct fts_settings *fts_user_get_settings(struct mail_user *user);
+
 bool fts_user_autoindex_exclude(struct mailbox *box);
 size_t fts_mail_user_message_max_size(struct mail_user *user);