]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
virtual: Convert plugin settings to regular settings
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 28 Aug 2024 00:23:23 +0000 (03:23 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:40:00 +0000 (10:40 +0200)
src/plugins/virtual/virtual-settings.c
src/plugins/virtual/virtual-settings.h
src/plugins/virtual/virtual-storage.c

index 7ce774b548e77b411eaf43c5dd1f63b962d2f894..5d5605bf1511d87298d9758514bf786d2b63f57e 100644 (file)
@@ -5,12 +5,18 @@
 #include "mail-storage-settings.h"
 #include "virtual-settings.h"
 
+#undef DEF
+#define DEF(type, name) \
+       SETTING_DEFINE_STRUCT_##type(#name, name, struct virtual_settings)
 static const struct setting_define virtual_setting_defines[] = {
        { .type = SET_FILTER_NAME, .key = "virtual" },
+       DEF(UINT, virtual_max_open_mailboxes),
+
        SETTING_DEFINE_LIST_END
 };
 
 static const struct virtual_settings virtual_default_settings = {
+       .virtual_max_open_mailboxes = 64,
 };
 
 static const struct setting_keyvalue virtual_default_settings_keyvalue[] = {
index 233d112cf584c400b2d9ab67a344cff9f0d90e04..e91d995d66647167bf6961849f778d5bb8ed2736 100644 (file)
@@ -3,6 +3,8 @@
 
 struct virtual_settings {
        pool_t pool;
+
+       unsigned int virtual_max_open_mailboxes;
 };
 
 extern const struct setting_parser_info virtual_setting_parser_info;
index 75cb50925715c3401842e4fe75906747be314827..d5433968b2848ca653af00b377ccf306f46f3f34 100644 (file)
@@ -7,12 +7,14 @@
 #include "llist.h"
 #include "mkdir-parents.h"
 #include "unlink-directory.h"
+#include "settings.h"
 #include "index-mail.h"
 #include "mail-copy.h"
 #include "mail-search.h"
 #include "mailbox-list-private.h"
 #include "virtual-plugin.h"
 #include "virtual-transaction.h"
+#include "virtual-settings.h"
 #include "virtual-storage.h"
 #include "mailbox-list-notify.h"
 
@@ -21,8 +23,6 @@
 #include <dirent.h>
 #include <sys/stat.h>
 
-#define VIRTUAL_DEFAULT_MAX_OPEN_MAILBOXES 64
-
 #define VIRTUAL_BACKEND_CONTEXT(obj) \
        MODULE_CONTEXT_REQUIRE(obj, virtual_backend_storage_module)
 
@@ -92,15 +92,14 @@ virtual_storage_create(struct mail_storage *_storage,
 {
        struct virtual_storage *storage =
                container_of(_storage, struct virtual_storage, storage);
-       const char *value;
+       const struct virtual_settings *set;
 
-       value = mail_user_plugin_getenv(_storage->user, "virtual_max_open_mailboxes");
-       if (value == NULL)
-               storage->max_open_mailboxes = VIRTUAL_DEFAULT_MAX_OPEN_MAILBOXES;
-       else if (str_to_uint(value, &storage->max_open_mailboxes) < 0) {
-               *error_r = "Invalid virtual_max_open_mailboxes setting";
+       if (settings_get(_storage->event, &virtual_setting_parser_info, 0,
+                        &set, error_r) < 0)
                return -1;
-       }
+
+       storage->max_open_mailboxes = set->virtual_max_open_mailboxes;
+       settings_free(set);
        return 0;
 }