]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Change mbox_[read|write]_locks to BOOLLIST..
authorsergey.kitov <sergey.kitov@open-xchange.com>
Wed, 8 May 2024 14:33:09 +0000 (17:33 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:40:00 +0000 (10:40 +0200)
src/lib-storage/index/mbox/mbox-lock.c
src/lib-storage/index/mbox/mbox-settings.c
src/lib-storage/index/mbox/mbox-settings.h

index 1820fc6f46a416da134e96f260c99dc3e1f8b81b..a269d35257862178cfec31b482ab3815d9265a39 100644 (file)
@@ -10,6 +10,7 @@
 #include "istream-raw-mbox.h"
 #include "mbox-file.h"
 #include "mbox-lock.h"
+#include "settings.h"
 
 #include <time.h>
 #include <unistd.h>
@@ -87,14 +88,14 @@ mbox_lock_list(struct mbox_lock_context *ctx, int lock_type,
 static int ATTR_NOWARN_UNUSED_RESULT
 mbox_unlock_files(struct mbox_lock_context *ctx);
 
-static void mbox_read_lock_methods(const char *str, const char *env,
+static void mbox_read_lock_methods(const ARRAY_TYPE(const_string) *list, const char *env,
                                   enum mbox_lock_type *locks)
 {
        enum mbox_lock_type type;
        const char *const *lock;
        int i, dest;
 
-       for (lock = t_strsplit(str, " "), dest = 0; *lock != NULL; lock++) {
+       for (lock = settings_boollist_get(list), dest = 0; *lock != NULL; lock++) {
                for (type = 0; lock_data[type].name != NULL; type++) {
                        if (strcasecmp(*lock, lock_data[type].name) == 0) {
                                type = lock_data[type].type;
@@ -125,9 +126,9 @@ static void mbox_init_lock_settings(struct mbox_storage *storage)
        enum mbox_lock_type write_locks[MBOX_LOCK_COUNT+1];
        int r, w;
 
-       mbox_read_lock_methods(storage->set->mbox_read_locks,
+       mbox_read_lock_methods(&storage->set->mbox_read_locks,
                               "mbox_read_locks", read_locks);
-       mbox_read_lock_methods(storage->set->mbox_write_locks,
+       mbox_read_lock_methods(&storage->set->mbox_write_locks,
                               "mbox_write_locks", write_locks);
 
        /* check that read/write list orders match. write_locks must contain
index 233703425c8c9414e828497e810512f10c5e86db..227a8f8ed0fa3ee9c6ba40d5d920af994b6cc847 100644 (file)
@@ -11,8 +11,8 @@
 
 static const struct setting_define mbox_setting_defines[] = {
        { .type = SET_FILTER_NAME, .key = "mbox" },
-       DEF(STR, mbox_read_locks),
-       DEF(STR, mbox_write_locks),
+       DEF(BOOLLIST, mbox_read_locks),
+       DEF(BOOLLIST, mbox_write_locks),
        DEF(TIME, mbox_lock_timeout),
        DEF(TIME, mbox_dotlock_change_timeout),
        DEF(SIZE_HIDDEN, mbox_min_index_size),
@@ -25,8 +25,8 @@ static const struct setting_define mbox_setting_defines[] = {
 };
 
 static const struct mbox_settings mbox_default_settings = {
-       .mbox_read_locks = "fcntl",
-       .mbox_write_locks = "dotlock fcntl",
+       .mbox_read_locks = ARRAY_INIT,
+       .mbox_write_locks = ARRAY_INIT,
        .mbox_lock_timeout = 5*60,
        .mbox_dotlock_change_timeout = 2*60,
        .mbox_min_index_size = 0,
@@ -41,6 +41,8 @@ static const struct setting_keyvalue mbox_default_settings_keyvalue[] = {
        { "mbox/mail_path", "%{home}/mail" },
        /* Use $mail_path/inbox as the INBOX, not $mail_path/INBOX */
        { "mbox/layout_fs/mail_inbox_path", "inbox" },
+       { "mbox_read_locks", "fcntl" },
+       { "mbox_write_locks", "dotlock fcntl" },
        { NULL, NULL }
 };
 
index bb1d449a94e25dfe93010aabbdf7e59abd42d317..c751082c6a1f6fb6aeec9708ebca07df0bba4658 100644 (file)
@@ -3,8 +3,8 @@
 
 struct mbox_settings {
        pool_t pool;
-       const char *mbox_read_locks;
-       const char *mbox_write_locks;
+       ARRAY_TYPE(const_string) mbox_read_locks;
+       ARRAY_TYPE(const_string) mbox_write_locks;
        unsigned int mbox_lock_timeout;
        unsigned int mbox_dotlock_change_timeout;
        uoff_t mbox_min_index_size;