return strcmp(s1->set->name, s2->set->name);
}
-void config_parse_load_modules(void)
+void config_parse_load_modules(bool dump_config_import)
{
struct module_dir_load_settings mod_set;
struct module *m;
} else {
array_free(&new_services);
}
+ if (dump_config_import)
+ puts(str_c(config_import));
}
void config_parser_deinit(void)
bool dump_defaults = FALSE, host_verify = FALSE, dump_full = FALSE;
bool print_banners = FALSE, hide_passwords = TRUE;
enum config_parse_flags flags = CONFIG_PARSE_FLAG_RETURN_BROKEN_CONFIG;
+ bool dump_config_import = FALSE;
if (getenv("USE_SYSEXITS") != NULL) {
/* we're coming from (e.g.) LDA */
}
master_service = master_service_init("config", master_service_flags,
- &argc, &argv, "aCdFhHm:nNpPwxs");
+ &argc, &argv, "aCdFhHIm:nNpPwxs");
orig_config_path = t_strdup(master_service_get_config_path(master_service));
i_set_failure_prefix("doveconf: ");
case 'H':
host_verify = TRUE;
break;
+ case 'I':
+ dump_config_import = TRUE;
+ break;
case 'm':
case 'p':
/* not supported anymore - ignore */
}
master_service_init_finish(master_service);
settings_set_config_binary(SETTINGS_BINARY_DOVECONF);
- config_parse_load_modules();
+ config_parse_load_modules(dump_config_import);
+ if (dump_config_import) {
+ module_dir_unload(&modules);
+ config_parser_deinit();
+ master_service_deinit(&master_service);
+ return 0;
+ }
if (print_banners) {
struct module *m;
restrict_access_allow_coredumps(TRUE);
settings_set_config_binary(SETTINGS_BINARY_CONFIG);
- config_parse_load_modules();
+ config_parse_load_modules(FALSE);
config_connections_init();