]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-settings: Add settings_root_find() and settings_instance_find()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 11 Aug 2023 14:20:23 +0000 (17:20 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:10 +0000 (12:34 +0200)
src/lib-settings/settings.c
src/lib-settings/settings.h

index 5a16fe5705d0b34e5bfc43dc06930f737c2aa134..228a48c0a53aa3e138a25df4a8ca4355ec69c186 100644 (file)
@@ -1665,6 +1665,32 @@ void settings_root_deinit(struct settings_root **_root)
        pool_unref(&root->pool);
 }
 
+struct settings_root *settings_root_find(const struct event *event)
+{
+       struct settings_root *root;
+
+       do {
+               root = event_get_ptr(event, SETTINGS_EVENT_ROOT);
+               if (root != NULL)
+                       return root;
+               event = event_get_parent(event);
+       } while (event != NULL);
+       return NULL;
+}
+
+struct settings_instance *settings_instance_find(const struct event *event)
+{
+       struct settings_instance *instance;
+
+       do {
+               instance = event_get_ptr(event, SETTINGS_EVENT_INSTANCE);
+               if (instance != NULL)
+                       return instance;
+               event = event_get_parent(event);
+       } while (event != NULL);
+       return NULL;
+}
+
 void settings_simple_init(struct settings_simple *set_r,
                          const char *const settings[])
 {
index cd0a66e5388b26acc815b8501846feebc3509668..19d110d7c214e63fa06f20875cbb119e5eee8c89 100644 (file)
@@ -263,6 +263,11 @@ bool settings_has_mmap(struct settings_root *root);
 struct settings_root *settings_root_init(void);
 void settings_root_deinit(struct settings_root **root);
 
+/* Return SETTINGS_EVENT_ROOT from the event or its parents. */
+struct settings_root *settings_root_find(const struct event *event);
+/* Return SETTINGS_EVENT_INSTANCE from the event or its parents. */
+struct settings_instance *settings_instance_find(const struct event *event);
+
 struct settings_simple {
        struct settings_root *root;
        struct settings_instance *instance;