From: sergey.kitov Date: Wed, 8 May 2024 14:33:09 +0000 (+0300) Subject: lib-storage: Change mbox_[read|write]_locks to BOOLLIST.. X-Git-Tag: 2.4.0~353 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=03f8fa1eccda1c6913468e0587f3ba495c9f980b;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Change mbox_[read|write]_locks to BOOLLIST.. --- diff --git a/src/lib-storage/index/mbox/mbox-lock.c b/src/lib-storage/index/mbox/mbox-lock.c index 1820fc6f46..a269d35257 100644 --- a/src/lib-storage/index/mbox/mbox-lock.c +++ b/src/lib-storage/index/mbox/mbox-lock.c @@ -10,6 +10,7 @@ #include "istream-raw-mbox.h" #include "mbox-file.h" #include "mbox-lock.h" +#include "settings.h" #include #include @@ -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 diff --git a/src/lib-storage/index/mbox/mbox-settings.c b/src/lib-storage/index/mbox/mbox-settings.c index 233703425c..227a8f8ed0 100644 --- a/src/lib-storage/index/mbox/mbox-settings.c +++ b/src/lib-storage/index/mbox/mbox-settings.c @@ -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 } }; diff --git a/src/lib-storage/index/mbox/mbox-settings.h b/src/lib-storage/index/mbox/mbox-settings.h index bb1d449a94..c751082c6a 100644 --- a/src/lib-storage/index/mbox/mbox-settings.h +++ b/src/lib-storage/index/mbox/mbox-settings.h @@ -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;