};
const struct setting_parser_info auth_passdb_setting_parser_info = {
+ .name = "auth_passdb",
+
.defines = auth_passdb_setting_defines,
.defaults = &auth_passdb_default_settings,
};
const struct setting_parser_info auth_userdb_setting_parser_info = {
+ .name = "auth_userdb",
+
.defines = auth_userdb_setting_defines,
.defaults = &auth_userdb_default_settings,
};
const struct setting_parser_info auth_setting_parser_info = {
- .module_name = "auth",
+ .name = "auth",
+
.defines = auth_setting_defines,
.defaults = &auth_default_settings,
if (ret > 0) {
found = TRUE;
/* FIXME: remove once auth does support these. */
- if (strcmp(l->root->module_name, "auth") == 0 &&
+ if (strcmp(l->root->name, "auth") == 0 &&
config_parser_is_in_localremote(ctx->cur_section)) {
ctx->error = p_strconcat(ctx->pool,
"Auth settings not supported inside local/remote blocks: ",
ctx.root_parsers[i].parser =
settings_parser_init(ctx.pool, all_roots[i],
settings_parser_flags);
+ for (unsigned int j = 0; j < i; j++) {
+ if (strcmp(all_roots[j]->name, all_roots[i]->name) == 0) {
+ /* Just fatal - it's difficult to continue
+ correctly here, and it's not supposed to
+ happen. */
+ i_panic("Duplicate settings struct name: %s",
+ all_roots[i]->name);
+ }
+ }
}
i_zero(&root);
}
}
-static const char *get_setting(const char *module, const char *name)
+static const char *get_setting(const char *info_name, const char *name)
{
struct config_module_parser *l;
const struct setting_define *def;
const void *set;
for (l = config_module_parsers; l->root != NULL; l++) {
- if (strcmp(l->root->module_name, module) != 0)
+ if (strcmp(l->root->name, info_name) != 0)
continue;
set = settings_parser_get_set(l->parser);
{
const char *base_dir, *symlink_path, *prev_path, *error;
- base_dir = get_setting("master", "base_dir");
+ base_dir = get_setting("master_service", "base_dir");
symlink_path = t_strconcat(base_dir, "/"PACKAGE".conf", NULL);
if (t_readlink(symlink_path, &prev_path, &error) < 0) {
if (errno != ENOENT)
} else {
const char *info;
- info = sysinfo_get(get_setting("mail", "mail_location"));
+ info = sysinfo_get(get_setting("mail_storage", "mail_location"));
if (*info != '\0')
printf("# %s\n", info);
printf("# Hostname: %s\n", my_hostdomain());
}
if ($state == 1 || $state == 3) {
- if ($state == 1) {
- if (/\.module_name = "(.*)"/) {
+ if ($state == 1 && $cur_name ne "") {
+ if (/\.name = "(.*)"/) {
$parsers{$cur_name} = $1;
}
+ if (/\.parent = /) {
+ delete($parsers{$cur_name});
+ }
if (/DEFLIST.*".*",(.*)$/) {
my $value = $1;
if ($value =~ /.*&(.*)\)/) {
$write = 1;
if (/};/) {
$state = 0;
+ $cur_name = "";
if ($state_ifdef) {
$_ .= "#endif\n";
$state_ifdef = 0;
};
const struct setting_parser_info test_settings_root = {
- .module_name = "test",
+ .name = "test",
.defines = test_settings_defs,
.defaults = &test_settings_defaults,
};
const struct setting_parser_info dict_setting_parser_info = {
- .module_name = "dict",
+ .name = "dict",
+
.defines = dict_setting_defines,
.defaults = &dict_default_settings,
};
const struct setting_parser_info doveadm_setting_parser_info = {
- .module_name = "doveadm",
+ .name = "doveadm",
+
.defines = doveadm_setting_defines,
.defaults = &doveadm_default_settings,
};
const struct setting_parser_info imap_login_setting_parser_info = {
- .module_name = "imap-login",
+ .name = "imap_login",
+
.defines = imap_login_setting_defines,
.defaults = &imap_login_default_settings,
};
const struct setting_parser_info imap_urlauth_login_setting_parser_info = {
- .module_name = "imap-urlauth-login",
+ .name = "imap_urlauth_login",
+
.defines = imap_urlauth_login_setting_defines,
.dependencies = imap_urlauth_login_setting_dependencies
};
const struct setting_parser_info imap_urlauth_setting_parser_info = {
- .module_name = "imap-urlauth",
+ .name = "imap_urlauth",
+
.defines = imap_urlauth_setting_defines,
.defaults = &imap_urlauth_default_settings,
};
const struct setting_parser_info imap_urlauth_worker_setting_parser_info = {
- .module_name = "imap-urlauth-worker",
+ .name = "imap_urlauth_worker",
+
.defines = imap_urlauth_worker_setting_defines,
.defaults = &imap_urlauth_worker_default_settings,
};
const struct setting_parser_info imap_setting_parser_info = {
- .module_name = "imap",
+ .name = "imap",
+
.defines = imap_setting_defines,
.defaults = &imap_default_settings,
};
const struct setting_parser_info lda_setting_parser_info = {
- .module_name = "lda",
+ .name = "lda",
+
.defines = lda_setting_defines,
.defaults = &lda_default_settings,
};
const struct setting_parser_info master_service_setting_parser_info = {
- .module_name = "master",
+ .name = "master_service",
+
.defines = master_service_setting_defines,
.defaults = &master_service_default_settings,
if ((flags & MASTER_SERVICE_SETTINGS_GET_FLAG_NO_CHECK) == 0) {
if (!settings_check(info, *pool_p, set, error_r)) {
*error_r = t_strdup_printf("Invalid %s settings: %s",
- info->module_name, *error_r);
+ info->name, *error_r);
pool_unref(&set_pool);
event_unref(&event);
return -1;
if (ret <= 0) {
*error_r = t_strdup_printf(
"Failed to expand %s setting variables: %s",
- info->module_name, *error_r);
+ info->name, *error_r);
pool_unref(&set_pool);
event_unref(&event);
return -1;
};
const struct setting_parser_info master_service_ssl_setting_parser_info = {
- .module_name = "ssl",
+ .name = "master_service_ssl",
.defines = master_service_ssl_setting_defines,
.defaults = &master_service_ssl_default_settings,
};
const struct setting_parser_info master_service_ssl_server_setting_parser_info = {
- .module_name = "ssl-server",
+ .name = "master_service_ssl_server",
+
.defines = master_service_ssl_server_setting_defines,
.defaults = &master_service_ssl_server_default_settings,
};
static const struct setting_parser_info strlist_info = {
- .module_name = NULL,
+ .name = NULL,
.defines = NULL,
.defaults = NULL,
SETTING_DEFINE_STRUCT_TYPE(SET_ENUM, SET_FLAG_HIDDEN, const char *, key, name, struct_name)
struct setting_parser_info {
- const char *module_name;
+ /* Unique name for the settings struct */
+ const char *name;
+
const struct setting_define *defines;
const void *defaults;
SETTING_DEFINE_LIST_END
};
const struct setting_parser_info root = {
- .module_name = "test",
+ .name = "test",
.defines = defs,
.defaults = &test_defaults,
};
const struct setting_parser_info smtp_submit_setting_parser_info = {
- .module_name = "smtp-submit",
+ .name = "smtp_submit",
+
.defines = smtp_submit_setting_defines,
.defaults = &smtp_submit_default_settings,
};
const struct setting_parser_info mdbox_setting_parser_info = {
- .module_name = "mdbox",
+ .name = "mdbox",
+
.defines = mdbox_setting_defines,
.defaults = &mdbox_default_settings,
};
const struct setting_parser_info imapc_setting_parser_info = {
- .module_name = "imapc",
+ .name = "imapc",
+
.defines = imapc_setting_defines,
.defaults = &imapc_default_settings,
};
const struct setting_parser_info maildir_setting_parser_info = {
- .module_name = "maildir",
+ .name = "maildir",
+
.defines = maildir_setting_defines,
.defaults = &maildir_default_settings,
};
const struct setting_parser_info mbox_setting_parser_info = {
- .module_name = "mbox",
+ .name = "mbox",
+
.defines = mbox_setting_defines,
.defaults = &mbox_default_settings,
/* </settings checks> */
const struct setting_parser_info pop3c_setting_parser_info = {
- .module_name = "pop3c",
+ .name = "pop3c",
+
.defines = pop3c_setting_defines,
.defaults = &pop3c_default_settings,
};
const struct setting_parser_info mail_storage_setting_parser_info = {
- .module_name = "mail",
+ .name = "mail_storage",
+
.defines = mail_storage_setting_defines,
.defaults = &mail_storage_default_settings,
};
const struct setting_parser_info mailbox_setting_parser_info = {
+ .name = "mailbox",
+
.defines = mailbox_setting_defines,
.defaults = &mailbox_default_settings,
};
const struct setting_parser_info mail_namespace_setting_parser_info = {
+ .name = "mail_namespace",
+
.defines = mail_namespace_setting_defines,
.defaults = &mail_namespace_default_settings,
};
const struct setting_parser_info mail_user_setting_parser_info = {
- .module_name = "mail",
+ .name = "mail_user",
+
.defines = mail_user_setting_defines,
.defaults = &mail_user_default_settings,
};
const struct setting_parser_info lmtp_setting_parser_info = {
- .module_name = "lmtp",
+ .name = "lmtp",
+
.defines = lmtp_setting_defines,
.defaults = &lmtp_default_settings,
};
const struct setting_parser_info login_setting_parser_info = {
- .module_name = "login",
+ .name = "login",
+
.defines = login_setting_defines,
.defaults = &login_default_settings,
};
static const struct setting_parser_info file_listener_setting_parser_info = {
+ .name = "file_listener",
+
.defines = file_listener_setting_defines,
.defaults = &file_listener_default_settings,
};
static const struct setting_parser_info inet_listener_setting_parser_info = {
+ .name = "inet_listener",
+
.defines = inet_listener_setting_defines,
.defaults = &inet_listener_default_settings,
};
const struct setting_parser_info service_setting_parser_info = {
+ .name = "service",
+
.defines = service_setting_defines,
.defaults = &service_default_settings,
};
const struct setting_parser_info master_setting_parser_info = {
- .module_name = "master",
+ .name = "master",
+
.defines = master_setting_defines,
.defaults = &master_default_settings,
};
const struct setting_parser_info fs_crypt_setting_parser_info = {
- .module_name = "fs-crypt",
+ .name = "fs_crypt",
+
.defines = fs_crypt_setting_defines,
.defaults = &fs_crypt_default_settings,
};
const struct setting_parser_info quota_status_setting_parser_info = {
- .module_name = "mail",
+ .name = "quota_status",
+
.defines = quota_status_setting_defines,
.defaults = "a_status_default_settings,
};
const struct setting_parser_info pop3_login_setting_parser_info = {
- .module_name = "pop3-login",
+ .name = "pop3_login",
+
.defines = pop3_login_setting_defines,
.dependencies = pop3_login_setting_dependencies
};
const struct setting_parser_info pop3_setting_parser_info = {
- .module_name = "pop3",
+ .name = "pop3",
+
.defines = pop3_setting_defines,
.defaults = &pop3_default_settings,
};
const struct setting_parser_info stats_exporter_setting_parser_info = {
+ .name = "stats_exporter",
+
.defines = stats_exporter_setting_defines,
.defaults = &stats_exporter_default_settings,
};
const struct setting_parser_info stats_metric_setting_parser_info = {
+ .name = "stats_metric",
+
.defines = stats_metric_setting_defines,
.defaults = &stats_metric_default_settings,
};
const struct setting_parser_info stats_setting_parser_info = {
- .module_name = "stats",
+ .name = "stats",
+
.defines = stats_setting_defines,
.defaults = &stats_default_settings,
};
const struct setting_parser_info submission_login_setting_parser_info = {
- .module_name = "submission-login",
+ .name = "submission_login",
+
.defines = submission_login_setting_defines,
.defaults = &submission_login_default_settings,
};
const struct setting_parser_info submission_setting_parser_info = {
- .module_name = "submission",
+ .name = "submission",
+
.defines = submission_setting_defines,
.defaults = &submission_default_settings,