]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Add named filters for all mailbox formats
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 27 Oct 2023 10:34:00 +0000 (13:34 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:39:57 +0000 (10:39 +0200)
This makes it possible to add settings inside e.g. sdbox { .. }
It will be needed by the next commits to add mailbox format-specific
default mailbox list settings.

src/lib-storage/index/dbox-multi/mdbox-settings.c
src/lib-storage/index/dbox-single/Makefile.am
src/lib-storage/index/dbox-single/sdbox-settings.c [new file with mode: 0644]
src/lib-storage/index/dbox-single/sdbox-settings.h [new file with mode: 0644]
src/lib-storage/index/imapc/imapc-settings.c
src/lib-storage/index/maildir/maildir-settings.c
src/lib-storage/index/mbox/mbox-settings.c
src/lib-storage/index/pop3c/pop3c-settings.c
src/plugins/virtual/Makefile.am
src/plugins/virtual/virtual-settings.c [new file with mode: 0644]
src/plugins/virtual/virtual-settings.h [new file with mode: 0644]

index 0525401178dc430158158a2b1e64e86e38b88c8e..b47846386b5c2b186d9e84cdd740376210bc95c9 100644 (file)
@@ -10,6 +10,7 @@
        SETTING_DEFINE_STRUCT_##type(#name, name, struct mdbox_settings)
 
 static const struct setting_define mdbox_setting_defines[] = {
+       { .type = SET_FILTER_NAME, .key = "mdbox" },
        DEF(BOOL, mdbox_preallocate_space),
        DEF(SIZE, mdbox_rotate_size),
        DEF(TIME, mdbox_rotate_interval),
index b6f59bdeb0fb7e9d4751826a3b3d502fac66d538..cb3fabf51d2389b656ba910eeeba7de3a2c00563 100644 (file)
@@ -17,12 +17,14 @@ libstorage_dbox_single_la_SOURCES = \
        sdbox-file.c \
        sdbox-mail.c \
        sdbox-save.c \
+       sdbox-settings.c \
        sdbox-sync.c \
        sdbox-sync-rebuild.c \
        sdbox-storage.c
 
 headers = \
        sdbox-file.h \
+       sdbox-settings.h \
        sdbox-storage.h \
        sdbox-sync.h
 
diff --git a/src/lib-storage/index/dbox-single/sdbox-settings.c b/src/lib-storage/index/dbox-single/sdbox-settings.c
new file mode 100644 (file)
index 0000000..8e26bf6
--- /dev/null
@@ -0,0 +1,25 @@
+/* Copyright (c) 2006-2023 Dovecot authors, see the included COPYING file */
+
+#include "lib.h"
+#include "settings-parser.h"
+#include "mail-storage-settings.h"
+#include "dbox-storage.h"
+#include "sdbox-settings.h"
+
+static const struct setting_define sdbox_setting_defines[] = {
+       { .type = SET_FILTER_NAME, .key = "sdbox" },
+       SETTING_DEFINE_LIST_END
+};
+
+static const struct sdbox_settings sdbox_default_settings = {
+};
+
+const struct setting_parser_info sdbox_setting_parser_info = {
+       .name = "sdbox",
+
+       .defines = sdbox_setting_defines,
+       .defaults = &sdbox_default_settings,
+
+       .struct_size = sizeof(struct sdbox_settings),
+       .pool_offset1 = 1 + offsetof(struct sdbox_settings, pool),
+};
diff --git a/src/lib-storage/index/dbox-single/sdbox-settings.h b/src/lib-storage/index/dbox-single/sdbox-settings.h
new file mode 100644 (file)
index 0000000..0156307
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef SDBOX_SETTINGS_H
+#define SDBOX_SETTINGS_H
+
+struct sdbox_settings {
+       pool_t pool;
+};
+
+extern const struct setting_parser_info sdbox_setting_parser_info;
+
+#endif
index 7a9710ce8d63acc5b0838551bf2f02d7289b10ec..f24573c245e0dd4fbfc4037c598e9c69001484a9 100644 (file)
@@ -12,6 +12,7 @@
 static bool imapc_settings_check(void *_set, pool_t pool, const char **error_r);
 
 static const struct setting_define imapc_setting_defines[] = {
+       { .type = SET_FILTER_NAME, .key = "imapc" },
        DEF(STR, imapc_host),
        DEF(IN_PORT, imapc_port),
 
index b195a083c09ece96700cf5e23942b9efd01785c3..1074aa63317051303f254d4bc89dcc4bcf98a5c7 100644 (file)
@@ -10,6 +10,7 @@
        SETTING_DEFINE_STRUCT_##type(#name, name, struct maildir_settings)
 
 static const struct setting_define maildir_setting_defines[] = {
+       { .type = SET_FILTER_NAME, .key = "maildir" },
        DEF(BOOL, maildir_copy_with_hardlinks),
        DEF(BOOL, maildir_very_dirty_syncs),
        DEF(BOOL, maildir_broken_filename_sizes),
index 368b65e34ccd9ca5c8d3f754f1dbbc88da9aa025..d2698e09ebf139efaa1305a33128a54b0a35eabc 100644 (file)
@@ -10,6 +10,7 @@
        SETTING_DEFINE_STRUCT_##type(#name, name, struct mbox_settings)
 
 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(TIME, mbox_lock_timeout),
index 85a7d5fd2a98a00098e66d6d37c17c7228106723..b1ce50b9029d676f7b5b9ecc380354094eaebbee 100644 (file)
@@ -10,6 +10,7 @@
        SETTING_DEFINE_STRUCT_##type(#name, name, struct pop3c_settings)
 
 static const struct setting_define pop3c_setting_defines[] = {
+       { .type = SET_FILTER_NAME, .key = "pop3c" },
        DEF(STR, pop3c_host),
        DEF(IN_PORT, pop3c_port),
 
index 0b8b9178dd26ed811d56e3556d2ead6b3af5df3d..c96e60790e6d021c11a99c4f7907f50c99f74200 100644 (file)
@@ -1,5 +1,6 @@
 AM_CPPFLAGS = \
        -I$(top_srcdir)/src/lib \
+       -I$(top_srcdir)/src/lib-settings \
        -I$(top_srcdir)/src/lib-mail \
        -I$(top_srcdir)/src/lib-imap \
        -I$(top_srcdir)/src/lib-index \
@@ -21,10 +22,12 @@ lib20_virtual_plugin_la_SOURCES = \
        virtual-search.c \
        virtual-storage.c \
        virtual-save.c \
+       virtual-settings.c \
        virtual-sync.c \
        virtual-transaction.c
 
 noinst_HEADERS = \
        virtual-plugin.h \
+       virtual-settings.h \
        virtual-storage.h \
        virtual-transaction.h
diff --git a/src/plugins/virtual/virtual-settings.c b/src/plugins/virtual/virtual-settings.c
new file mode 100644 (file)
index 0000000..adb126a
--- /dev/null
@@ -0,0 +1,24 @@
+/* Copyright (c) 2006-2023 Dovecot authors, see the included COPYING file */
+
+#include "lib.h"
+#include "settings-parser.h"
+#include "mail-storage-settings.h"
+#include "virtual-settings.h"
+
+static const struct setting_define virtual_setting_defines[] = {
+       { .type = SET_FILTER_NAME, .key = "virtual" },
+       SETTING_DEFINE_LIST_END
+};
+
+static const struct virtual_settings virtual_default_settings = {
+};
+
+const struct setting_parser_info virtual_setting_parser_info = {
+       .name = "virtual",
+
+       .defines = virtual_setting_defines,
+       .defaults = &virtual_default_settings,
+
+       .struct_size = sizeof(struct virtual_settings),
+       .pool_offset1 = 1 + offsetof(struct virtual_settings, pool),
+};
diff --git a/src/plugins/virtual/virtual-settings.h b/src/plugins/virtual/virtual-settings.h
new file mode 100644 (file)
index 0000000..233d112
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef VIRTUAL_SETTINGS_H
+#define VIRTUAL_SETTINGS_H
+
+struct virtual_settings {
+       pool_t pool;
+};
+
+extern const struct setting_parser_info virtual_setting_parser_info;
+
+#endif