]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
config: Pass dovecot_config_version to config_export_init()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Sun, 2 Mar 2025 08:43:58 +0000 (10:43 +0200)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 5 Mar 2025 18:20:31 +0000 (20:20 +0200)
Simplifies the next commit.

src/config/config-dump-full.c
src/config/config-request.c
src/config/config-request.h
src/config/doveconf.c

index ec7f6b27ed3eaa4c07e497e2c64227ce9031123b..2032fa2415d5560c6ea13475455ef1241588eeed 100644 (file)
@@ -448,6 +448,7 @@ config_dump_full_handle_error(struct dump_context *dump_ctx,
 
 struct config_dump_full_context {
        struct config_parsed *config;
+       const char *dovecot_config_version;
        struct ostream *output;
        enum config_dump_full_dest dest;
 
@@ -536,12 +537,12 @@ config_dump_full_sections(struct config_dump_full_context *ctx,
                if (dest == CONFIG_DUMP_FULL_DEST_STDOUT) {
                        export_ctx = config_export_init(
                                CONFIG_DUMP_SCOPE_SET_AND_DEFAULT_OVERRIDES,
-                               0,
+                               0, ctx->dovecot_config_version,
                                config_dump_full_stdout_callback, &dump_ctx);
                } else {
                        export_ctx = config_export_init(
                                CONFIG_DUMP_SCOPE_SET_AND_DEFAULT_OVERRIDES,
-                               0,
+                               0, ctx->dovecot_config_version,
                                config_dump_full_callback, &dump_ctx);
                }
                config_export_set_module_parsers(export_ctx,
@@ -606,22 +607,26 @@ int config_dump_full(struct config_parsed *config,
                     const char **import_environment_r)
 {
        struct config_export_context *export_ctx;
-       const char *error;
+       const char *dovecot_config_version, *error;
        int fd = -1;
 
        struct dump_context dump_ctx = {
                .delayed_output = str_new(default_pool, 256),
        };
 
+       if (!config_parsed_get_version(config, &dovecot_config_version))
+               dovecot_config_version = "";
+
        if (dest == CONFIG_DUMP_FULL_DEST_STDOUT) {
                export_ctx = config_export_init(
                                CONFIG_DUMP_SCOPE_SET_AND_DEFAULT_OVERRIDES,
-                               flags, config_dump_full_stdout_callback,
-                               &dump_ctx);
+                               flags, dovecot_config_version,
+                               config_dump_full_stdout_callback, &dump_ctx);
        } else {
                export_ctx = config_export_init(
                                CONFIG_DUMP_SCOPE_SET_AND_DEFAULT_OVERRIDES,
-                               flags, config_dump_full_callback, &dump_ctx);
+                               flags, dovecot_config_version,
+                               config_dump_full_callback, &dump_ctx);
        }
        struct config_filter_parser *filter_parser =
                config_parsed_get_global_filter_parser(config);
@@ -686,6 +691,7 @@ int config_dump_full(struct config_parsed *config,
 
        struct config_dump_full_context ctx = {
                .config = config,
+               .dovecot_config_version = dovecot_config_version,
                .output = output,
                .dest = dest,
                .filters = config_parsed_get_filter_parsers(config),
index 0fe6ded4d71aa336a63a78fa13e1dda9e260e608..2eeb80aebaf1cf0d4fd351b246d2bb95ab7ca952 100644 (file)
@@ -18,6 +18,7 @@ struct config_export_context {
        string_t *value;
        HASH_TABLE(const char *, const char *) keys;
        enum config_dump_scope scope;
+       const char *dovecot_config_version;
 
        config_request_callback_t *callback;
        void *context;
@@ -362,6 +363,7 @@ settings_export(struct config_export_context *ctx,
 struct config_export_context *
 config_export_init(enum config_dump_scope scope,
                   enum config_dump_flags flags,
+                  const char *dovecot_config_version,
                   config_request_callback_t *callback, void *context)
 {
        struct config_export_context *ctx;
@@ -375,6 +377,7 @@ config_export_init(enum config_dump_scope scope,
        ctx->callback = callback;
        ctx->context = context;
        ctx->scope = scope;
+       ctx->dovecot_config_version = p_strdup(pool, dovecot_config_version);
        ctx->value = str_new(pool, 256);
        if ((ctx->flags & CONFIG_DUMP_FLAG_DEDUPLICATE_KEYS) != 0)
                hash_table_create(&ctx->keys, ctx->pool, 0, str_hash, strcmp);
index 8d7c463fb0461047b6f9d642689bef1f73cca87f..72951a055b9cbc21e4fd20f570fa4f7f8a58f1c8 100644 (file)
@@ -53,10 +53,11 @@ bool config_export_type(string_t *str, const void *value,
 struct config_export_context *
 config_export_init(enum config_dump_scope scope,
                   enum config_dump_flags flags,
+                  const char *dovecot_config_version,
                   config_request_callback_t *callback, void *context)
        ATTR_NULL(1, 5);
-#define config_export_init(scope, flags, callback, context) \
-       config_export_init(scope, flags, \
+#define config_export_init(scope, flags, version, callback, context) \
+       config_export_init(scope, flags, version, \
                (config_request_callback_t *)callback, \
                TRUE ? context : CALLBACK_TYPECHECK(callback, \
                        void (*)(const struct config_export_setting *, typeof(context))))
index 951656ccd672f504a90177c633ce42503e8ddde8..ad0d1b4c5d7141970437cd9127e59649c4034e87 100644 (file)
@@ -175,8 +175,12 @@ config_dump_human_init(enum config_dump_scope scope,
 {
        struct config_dump_human_context *ctx;
        enum config_dump_flags flags;
+       const char *dovecot_config_version;
        pool_t pool;
 
+       if (!config_parsed_get_version(config, &dovecot_config_version))
+               dovecot_config_version = "";
+
        pool = pool_alloconly_create(MEMPOOL_GROWING"config human strings", 1024*32);
        ctx = p_new(pool, struct config_dump_human_context, 1);
        ctx->pool = pool;
@@ -185,6 +189,7 @@ config_dump_human_init(enum config_dump_scope scope,
 
        flags = CONFIG_DUMP_FLAG_DEDUPLICATE_KEYS;
        ctx->export_ctx = config_export_init(scope, flags,
+                                            dovecot_config_version,
                                             config_request_get_strings, ctx);
        config_export_set_module_parsers(ctx->export_ctx,
                                         filter_parser->module_parsers);