#include "istream-raw-mbox.h"
#include "mbox-file.h"
#include "mbox-lock.h"
+#include "settings.h"
#include <time.h>
#include <unistd.h>
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;
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
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),
};
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,
{ "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 }
};
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;