From: Timo Sirainen Date: Fri, 27 Oct 2023 10:34:00 +0000 (+0300) Subject: lib-storage: Add named filters for all mailbox formats X-Git-Tag: 2.4.0~992 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=73bc654961d593da9276bb6f5e2096726329e2e0;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Add named filters for all mailbox formats 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. --- diff --git a/src/lib-storage/index/dbox-multi/mdbox-settings.c b/src/lib-storage/index/dbox-multi/mdbox-settings.c index 0525401178..b47846386b 100644 --- a/src/lib-storage/index/dbox-multi/mdbox-settings.c +++ b/src/lib-storage/index/dbox-multi/mdbox-settings.c @@ -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), diff --git a/src/lib-storage/index/dbox-single/Makefile.am b/src/lib-storage/index/dbox-single/Makefile.am index b6f59bdeb0..cb3fabf51d 100644 --- a/src/lib-storage/index/dbox-single/Makefile.am +++ b/src/lib-storage/index/dbox-single/Makefile.am @@ -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 index 0000000000..8e26bf6328 --- /dev/null +++ b/src/lib-storage/index/dbox-single/sdbox-settings.c @@ -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 index 0000000000..0156307b60 --- /dev/null +++ b/src/lib-storage/index/dbox-single/sdbox-settings.h @@ -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 diff --git a/src/lib-storage/index/imapc/imapc-settings.c b/src/lib-storage/index/imapc/imapc-settings.c index 7a9710ce8d..f24573c245 100644 --- a/src/lib-storage/index/imapc/imapc-settings.c +++ b/src/lib-storage/index/imapc/imapc-settings.c @@ -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), diff --git a/src/lib-storage/index/maildir/maildir-settings.c b/src/lib-storage/index/maildir/maildir-settings.c index b195a083c0..1074aa6331 100644 --- a/src/lib-storage/index/maildir/maildir-settings.c +++ b/src/lib-storage/index/maildir/maildir-settings.c @@ -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), diff --git a/src/lib-storage/index/mbox/mbox-settings.c b/src/lib-storage/index/mbox/mbox-settings.c index 368b65e34c..d2698e09eb 100644 --- a/src/lib-storage/index/mbox/mbox-settings.c +++ b/src/lib-storage/index/mbox/mbox-settings.c @@ -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), diff --git a/src/lib-storage/index/pop3c/pop3c-settings.c b/src/lib-storage/index/pop3c/pop3c-settings.c index 85a7d5fd2a..b1ce50b902 100644 --- a/src/lib-storage/index/pop3c/pop3c-settings.c +++ b/src/lib-storage/index/pop3c/pop3c-settings.c @@ -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), diff --git a/src/plugins/virtual/Makefile.am b/src/plugins/virtual/Makefile.am index 0b8b9178dd..c96e60790e 100644 --- a/src/plugins/virtual/Makefile.am +++ b/src/plugins/virtual/Makefile.am @@ -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 index 0000000000..adb126add5 --- /dev/null +++ b/src/plugins/virtual/virtual-settings.c @@ -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 index 0000000000..233d112cf5 --- /dev/null +++ b/src/plugins/virtual/virtual-settings.h @@ -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