#include <stddef.h>
-extern struct setting_parser_info auth_setting_parser_info;
-extern struct setting_parser_info auth_root_setting_parser_info;
+extern const struct setting_parser_info auth_setting_parser_info;
+extern const struct setting_parser_info auth_root_setting_parser_info;
static bool auth_settings_check(void *_set, pool_t pool, const char **error_r);
#define DEF(type, name) \
{ type, #name, offsetof(struct auth_passdb_settings, name), NULL }
-static struct setting_define auth_passdb_setting_defines[] = {
+static const struct setting_define auth_passdb_setting_defines[] = {
DEF(SET_STR, driver),
DEF(SET_STR, args),
DEF(SET_BOOL, deny),
SETTING_DEFINE_LIST_END
};
-struct setting_parser_info auth_passdb_setting_parser_info = {
+const struct setting_parser_info auth_passdb_setting_parser_info = {
MEMBER(module_name) NULL,
MEMBER(defines) auth_passdb_setting_defines,
MEMBER(defaults) NULL,
#define DEF(type, name) \
{ type, #name, offsetof(struct auth_userdb_settings, name), NULL }
-static struct setting_define auth_userdb_setting_defines[] = {
+static const struct setting_define auth_userdb_setting_defines[] = {
DEF(SET_STR, driver),
DEF(SET_STR, args),
SETTING_DEFINE_LIST_END
};
-struct setting_parser_info auth_userdb_setting_parser_info = {
+const struct setting_parser_info auth_userdb_setting_parser_info = {
MEMBER(module_name) NULL,
MEMBER(defines) auth_userdb_setting_defines,
MEMBER(defaults) NULL,
#define DEFLIST(field, name, defines) \
{ SET_DEFLIST, name, offsetof(struct auth_settings, field), defines }
-static struct setting_define auth_setting_defines[] = {
+static const struct setting_define auth_setting_defines[] = {
DEF(SET_STR, mechanisms),
DEF(SET_STR, realms),
DEF(SET_STR, default_realm),
SETTING_DEFINE_LIST_END
};
-static struct auth_settings auth_default_settings = {
+static const struct auth_settings auth_default_settings = {
MEMBER(mechanisms) "plain",
MEMBER(realms) "",
MEMBER(default_realm) "",
MEMBER(userdbs) ARRAY_INIT
};
-struct setting_parser_info auth_setting_parser_info = {
+const struct setting_parser_info auth_setting_parser_info = {
MEMBER(module_name) "auth",
MEMBER(defines) auth_setting_defines,
MEMBER(defaults) &auth_default_settings,
const struct setting_parser_info *info)
{
const struct setting_parser_info *p;
- struct setting_parser_info *const *dep;
+ const struct setting_parser_info *const *dep;
/* we're trying to find info or its parents from root's dependencies. */
/struct setting_define.*{/ ||
/struct .*_default_settings = {/) {
$state++;
- } elsif (/^(static )?struct setting_parser_info (.*) = {/) {
- $state++;
+ } elsif (/^(static )?const struct setting_parser_info (.*) = {/) {
$cur_name = $2;
- } elsif (/^extern struct setting_parser_info (.*);/) {
- $externs .= "extern struct setting_parser_info $1;\n";
+ $state++ if ($cur_name !~ /^\*default_/);
+ } elsif (/^extern const struct setting_parser_info (.*);/) {
+ $externs .= "extern const struct setting_parser_info $1;\n";
} elsif (/\/\* <settings checks> \*\//) {
$state = 4;
$code .= $_;
my $value = $1;
if ($value =~ /.*&(.*)\)/) {
$parsers{$1} = 0;
- $externs .= "extern struct setting_parser_info $1;\n";
+ $externs .= "extern const struct setting_parser_info $1;\n";
} else {
$state = 3;
}
#define DEF(type, name) \
{ type, #name, offsetof(struct dict_settings, name), NULL }
-static struct setting_define dict_setting_defines[] = {
+static const struct setting_define dict_setting_defines[] = {
DEF(SET_STR, base_dir),
DEF(SET_STR, dict_db_config),
{ SET_STRLIST, "dict", offsetof(struct dict_settings, dicts), NULL },
SETTING_DEFINE_LIST_END
};
-struct dict_settings dict_default_settings = {
+const struct dict_settings dict_default_settings = {
MEMBER(base_dir) PKG_RUNDIR,
MEMBER(dict_db_config) "",
MEMBER(dicts) ARRAY_INIT
};
-struct setting_parser_info dict_setting_parser_info = {
+const struct setting_parser_info dict_setting_parser_info = {
MEMBER(module_name) "dict",
MEMBER(defines) dict_setting_defines,
MEMBER(defaults) &dict_default_settings,
MEMBER(parent_offset) (size_t)-1
};
-struct dict_settings *dict_settings;
+const struct dict_settings *dict_settings;
ARRAY_DEFINE(dicts, const char *);
};
-extern struct setting_parser_info dict_setting_parser_info;
-extern struct dict_settings *dict_settings;
+extern const struct setting_parser_info dict_setting_parser_info;
+extern const struct dict_settings *dict_settings;
#endif
#define DEF(type, name) \
{ type, #name, offsetof(struct imap_login_settings, name), NULL }
-static struct setting_define imap_login_setting_defines[] = {
+static const struct setting_define imap_login_setting_defines[] = {
DEF(SET_STR, imap_capability),
SETTING_DEFINE_LIST_END
};
-static struct imap_login_settings imap_login_default_settings = {
+static const struct imap_login_settings imap_login_default_settings = {
MEMBER(imap_capability) ""
};
-static struct setting_parser_info *imap_login_setting_dependencies[] = {
+static const struct setting_parser_info *imap_login_setting_dependencies[] = {
&login_setting_parser_info,
NULL
};
-static struct setting_parser_info imap_login_setting_parser_info = {
+static const struct setting_parser_info imap_login_setting_parser_info = {
MEMBER(module_name) "imap-login",
MEMBER(defines) imap_login_setting_defines,
MEMBER(defaults) &imap_login_default_settings,
#define DEFLIST(field, name, defines) \
{ SET_DEFLIST, name, offsetof(struct imap_settings, field), defines }
-static struct setting_define imap_setting_defines[] = {
+static const struct setting_define imap_setting_defines[] = {
DEF(SET_BOOL, mail_debug),
DEF(SET_UINT, imap_max_line_length),
SETTING_DEFINE_LIST_END
};
-static struct imap_settings imap_default_settings = {
+static const struct imap_settings imap_default_settings = {
MEMBER(mail_debug) FALSE,
/* RFC-2683 recommends at least 8000 bytes. Some clients however don't
MEMBER(imap_id_log) ""
};
-static struct setting_parser_info *imap_setting_dependencies[] = {
+static const struct setting_parser_info *imap_setting_dependencies[] = {
&mail_user_setting_parser_info,
NULL
};
-struct setting_parser_info imap_setting_parser_info = {
+const struct setting_parser_info imap_setting_parser_info = {
MEMBER(module_name) "imap",
MEMBER(defines) imap_setting_defines,
MEMBER(defaults) &imap_default_settings,
enum imap_client_workarounds num;
};
-static struct imap_client_workaround_list imap_client_workaround_list[] = {
+static const struct imap_client_workaround_list imap_client_workaround_list[] = {
{ "delay-newmail", WORKAROUND_DELAY_NEWMAIL },
{ "outlook-idle", 0 }, /* only for backwards compatibility */
{ "netscape-eoh", WORKAROUND_NETSCAPE_EOH },
const char **error_r)
{
enum imap_client_workarounds client_workarounds = 0;
- struct imap_client_workaround_list *list;
+ const struct imap_client_workaround_list *list;
const char *const *str;
str = t_strsplit_spaces(set->imap_client_workarounds, " ,");
enum imap_client_workarounds parsed_workarounds;
};
-extern struct setting_parser_info imap_setting_parser_info;
+extern const struct setting_parser_info imap_setting_parser_info;
#endif
#define DEF_STR(name) DEF_STRUCT_STR(name, dict_sql_map)
-static struct setting_def dict_sql_map_setting_defs[] = {
+static const struct setting_def dict_sql_map_setting_defs[] = {
DEF_STR(pattern),
DEF_STR(table),
DEF_STR(username_field),
#define DEFLIST(field, name, defines) \
{ SET_DEFLIST, name, offsetof(struct lda_settings, field), defines }
-static struct setting_define lda_setting_defines[] = {
+static const struct setting_define lda_setting_defines[] = {
DEF(SET_STR, postmaster_address),
DEF(SET_STR, hostname),
DEF(SET_STR, sendmail_path),
SETTING_DEFINE_LIST_END
};
-static struct lda_settings lda_default_settings = {
+static const struct lda_settings lda_default_settings = {
MEMBER(postmaster_address) "",
MEMBER(hostname) "",
MEMBER(sendmail_path) "/usr/lib/sendmail",
MEMBER(lda_mailbox_autosubscribe) FALSE
};
-static struct setting_parser_info *lda_setting_dependencies[] = {
+static const struct setting_parser_info *lda_setting_dependencies[] = {
&mail_user_setting_parser_info,
NULL
};
-struct setting_parser_info lda_setting_parser_info = {
+const struct setting_parser_info lda_setting_parser_info = {
MEMBER(module_name) "lda",
MEMBER(defines) lda_setting_defines,
MEMBER(defaults) &lda_default_settings,
bool lda_mailbox_autosubscribe;
};
-extern struct setting_parser_info lda_setting_parser_info;
+extern const struct setting_parser_info lda_setting_parser_info;
#endif
#define DEF(type, name) \
{ type, #name, offsetof(struct master_service_settings, name), NULL }
-static struct setting_define master_service_setting_defines[] = {
+static const struct setting_define master_service_setting_defines[] = {
DEF(SET_STR, log_path),
DEF(SET_STR, info_log_path),
DEF(SET_STR, debug_log_path),
SETTING_DEFINE_LIST_END
};
-static struct master_service_settings master_service_default_settings = {
+static const struct master_service_settings master_service_default_settings = {
MEMBER(log_path) "",
MEMBER(info_log_path) "",
MEMBER(debug_log_path) "",
MEMBER(shutdown_clients) TRUE
};
-struct setting_parser_info master_service_setting_parser_info = {
+const struct setting_parser_info master_service_setting_parser_info = {
MEMBER(module_name) "master",
MEMBER(defines) master_service_setting_defines,
MEMBER(defaults) &master_service_default_settings,
if (input->dyn_parsers != NULL) {
settings_parser_info_update(service->set_pool,
+ input->dyn_parsers_parent,
input->dyn_parsers);
}
struct master_service_settings_input {
const struct setting_parser_info **roots;
const struct dynamic_settings_parser *dyn_parsers;
+ struct setting_parser_info *dyn_parsers_parent;
const char *config_path;
bool preserve_home;
struct ip_addr local_ip, remote_ip;
};
-extern struct setting_parser_info master_service_setting_parser_info;
+extern const struct setting_parser_info master_service_setting_parser_info;
int master_service_settings_read(struct master_service *service,
const struct master_service_settings_input *input,
}
static void
-info_update_real(pool_t pool, const struct dynamic_settings_parser *parsers)
+info_update_real(pool_t pool, struct setting_parser_info *parent,
+ const struct dynamic_settings_parser *parsers)
{
/* @UNSAFE */
- struct setting_parser_info *parent;
ARRAY_DEFINE(defines, struct setting_define);
ARRAY_TYPE(dynamic_settings_parser) dynamic_parsers;
struct dynamic_settings_parser new_parser;
unsigned int i, j;
size_t offset, new_struct_size;
- parent = parsers[0].info->parent;
-
t_array_init(&defines, 128);
/* add existing defines */
for (j = 0; parent->defines[j].key != NULL; j++)
}
void settings_parser_info_update(pool_t pool,
+ struct setting_parser_info *parent,
const struct dynamic_settings_parser *parsers)
{
if (parsers[0].name != NULL) T_BEGIN {
- info_update_real(pool, parsers);
+ info_update_real(pool, parent, parsers);
} T_END;
}
size_t struct_size;
size_t parent_offset;
- struct setting_parser_info *parent;
+ const struct setting_parser_info *parent;
bool (*check_func)(void *set, pool_t pool, const char **error_r);
- struct setting_parser_info *const *dependencies;
+ const struct setting_parser_info *const *dependencies;
struct dynamic_settings_parser *dynamic_parsers;
};
dynamic_settings_list structures to their parent. All must have the same
parent. The new structures are allocated from the given pool. */
void settings_parser_info_update(pool_t pool,
+ struct setting_parser_info *parent,
const struct dynamic_settings_parser *parsers);
/* Return pointer to beginning of settings for given name, or NULL if there is
}
const char *
-parse_setting_from_defs(pool_t pool, struct setting_def *defs, void *base,
+parse_setting_from_defs(pool_t pool, const struct setting_def *defs, void *base,
const char *key, const char *value)
{
- struct setting_def *def;
+ const struct setting_def *def;
for (def = defs; def->name != NULL; def++) {
if (strcmp(def->name, key) == 0) {
extern settings_section_callback_t *null_settings_section_callback;
const char *
-parse_setting_from_defs(pool_t pool, struct setting_def *defs, void *base,
+parse_setting_from_defs(pool_t pool, const struct setting_def *defs, void *base,
const char *key, const char *value);
bool settings_read(const char *path, const char *section,
static bool mdbox_settings_verify(void *_set, pool_t pool ATTR_UNUSED,
const char **error_r);
-static struct setting_define mdbox_setting_defines[] = {
+static const struct setting_define mdbox_setting_defines[] = {
DEF(SET_UINT, mdbox_rotate_size),
DEF(SET_UINT, mdbox_rotate_min_size),
DEF(SET_UINT, mdbox_rotate_days),
SETTING_DEFINE_LIST_END
};
-static struct mdbox_settings mdbox_default_settings = {
+static const struct mdbox_settings mdbox_default_settings = {
MEMBER(mdbox_rotate_size) 2048*1024,
MEMBER(mdbox_rotate_min_size) 16*1024,
MEMBER(mdbox_rotate_days) 0,
MEMBER(mdbox_purge_min_percentage) 0
};
-static struct setting_parser_info mdbox_setting_parser_info = {
+static const struct setting_parser_info mdbox_setting_parser_info = {
MEMBER(module_name) "mdbox",
MEMBER(defines) mdbox_setting_defines,
MEMBER(defaults) &mdbox_default_settings,
#define DEF(type, name) \
{ type, #name, offsetof(struct maildir_settings, name), NULL }
-static struct setting_define maildir_setting_defines[] = {
+static const struct setting_define maildir_setting_defines[] = {
DEF(SET_BOOL, maildir_stat_dirs),
DEF(SET_BOOL, maildir_copy_with_hardlinks),
DEF(SET_BOOL, maildir_copy_preserve_filename),
SETTING_DEFINE_LIST_END
};
-static struct maildir_settings maildir_default_settings = {
+static const struct maildir_settings maildir_default_settings = {
MEMBER(maildir_stat_dirs) FALSE,
MEMBER(maildir_copy_with_hardlinks) TRUE,
MEMBER(maildir_copy_preserve_filename) FALSE,
MEMBER(maildir_very_dirty_syncs) FALSE
};
-static struct setting_parser_info maildir_setting_parser_info = {
+static const struct setting_parser_info maildir_setting_parser_info = {
MEMBER(module_name) "maildir",
MEMBER(defines) maildir_setting_defines,
MEMBER(defaults) &maildir_default_settings,
#define DEF(type, name) \
{ type, #name, offsetof(struct mbox_settings, name), NULL }
-static struct setting_define mbox_setting_defines[] = {
+static const struct setting_define mbox_setting_defines[] = {
DEF(SET_STR, mbox_read_locks),
DEF(SET_STR, mbox_write_locks),
DEF(SET_UINT, mbox_lock_timeout),
SETTING_DEFINE_LIST_END
};
-static struct mbox_settings mbox_default_settings = {
+static const struct mbox_settings mbox_default_settings = {
MEMBER(mbox_read_locks) "fcntl",
MEMBER(mbox_write_locks) "dotlock fcntl",
MEMBER(mbox_lock_timeout) 5*60,
MEMBER(mbox_lazy_writes) TRUE
};
-static struct setting_parser_info mbox_setting_parser_info = {
+static const struct setting_parser_info mbox_setting_parser_info = {
MEMBER(module_name) "mbox",
MEMBER(defines) mbox_setting_defines,
MEMBER(defaults) &mbox_default_settings,
}
}
-static void
+static struct setting_parser_info *
dyn_parsers_update_parent(pool_t pool,
struct master_service_settings_input *input)
{
new_dyn_parsers[i].info = new_info;
}
input->dyn_parsers = new_dyn_parsers;
+ return new_parent;
}
int mail_storage_service_read_settings(struct mail_storage_service_ctx *ctx,
use $HOME */
set_input.preserve_home =
(ctx->flags & MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP) == 0;
- dyn_parsers_update_parent(pool, &set_input);
+ set_input.dyn_parsers_parent =
+ dyn_parsers_update_parent(pool, &set_input);
if (input != NULL) {
set_input.module = input->module;
#define DEF(type, name) \
{ type, #name, offsetof(struct mail_storage_settings, name), NULL }
-static struct setting_define mail_storage_setting_defines[] = {
+static const struct setting_define mail_storage_setting_defines[] = {
DEF(SET_STR_VARS, mail_location),
DEF(SET_STR, mail_cache_fields),
DEF(SET_STR, mail_never_cache_fields),
SETTING_DEFINE_LIST_END
};
-struct mail_storage_settings mail_storage_default_settings = {
+const struct mail_storage_settings mail_storage_default_settings = {
MEMBER(mail_location) "",
MEMBER(mail_cache_fields) "flags",
MEMBER(mail_never_cache_fields) "imap.envelope",
MEMBER(pop3_uidl_format) "%08Xu%08Xv"
};
-struct setting_parser_info mail_storage_setting_parser_info = {
+const struct setting_parser_info mail_storage_setting_parser_info = {
MEMBER(module_name) "mail",
MEMBER(defines) mail_storage_setting_defines,
MEMBER(defaults) &mail_storage_default_settings,
#define DEF(type, name) \
{ type, #name, offsetof(struct mail_namespace_settings, name), NULL }
-static struct setting_define mail_namespace_setting_defines[] = {
+static const struct setting_define mail_namespace_setting_defines[] = {
DEF(SET_ENUM, type),
DEF(SET_STR, separator),
DEF(SET_STR_VARS, prefix),
SETTING_DEFINE_LIST_END
};
-struct mail_namespace_settings mail_namespace_default_settings = {
+const struct mail_namespace_settings mail_namespace_default_settings = {
MEMBER(type) "private:shared:public",
MEMBER(separator) "",
MEMBER(prefix) "",
MEMBER(subscriptions) TRUE
};
-struct setting_parser_info mail_namespace_setting_parser_info = {
+const struct setting_parser_info mail_namespace_setting_parser_info = {
MEMBER(module_name) NULL,
MEMBER(defines) mail_namespace_setting_defines,
MEMBER(defaults) &mail_namespace_default_settings,
{ SET_DEFLIST_UNIQUE, name, \
offsetof(struct mail_user_settings, field), defines }
-static struct setting_define mail_user_setting_defines[] = {
+static const struct setting_define mail_user_setting_defines[] = {
DEF(SET_STR, base_dir),
DEF(SET_STR, auth_socket_path),
SETTING_DEFINE_LIST_END
};
-static struct mail_user_settings mail_user_default_settings = {
+static const struct mail_user_settings mail_user_default_settings = {
MEMBER(base_dir) PKG_RUNDIR,
MEMBER(auth_socket_path) "auth-userdb",
MEMBER(plugin_envs) ARRAY_INIT
};
-struct setting_parser_info mail_user_setting_parser_info = {
+const struct setting_parser_info mail_user_setting_parser_info = {
MEMBER(module_name) "mail",
MEMBER(defines) mail_user_setting_defines,
MEMBER(defaults) &mail_user_default_settings,
ARRAY_DEFINE(plugin_envs, const char *);
};
-extern struct setting_parser_info mail_user_setting_parser_info;
-extern struct setting_parser_info mail_namespace_setting_parser_info;
-extern struct setting_parser_info mail_storage_setting_parser_info;
-extern struct mail_namespace_settings mail_namespace_default_settings;
+extern const struct setting_parser_info mail_user_setting_parser_info;
+extern const struct setting_parser_info mail_namespace_setting_parser_info;
+extern const struct setting_parser_info mail_storage_setting_parser_info;
+extern const struct mail_namespace_settings mail_namespace_default_settings;
const void *
mail_user_set_get_driver_settings(const struct setting_parser_info *info,
#define DEF(type, name) \
{ type, #name, offsetof(struct lmtp_settings, name), NULL }
-static struct setting_define lmtp_setting_defines[] = {
+static const struct setting_define lmtp_setting_defines[] = {
DEF(SET_BOOL, lmtp_proxy),
SETTING_DEFINE_LIST_END
};
-static struct lmtp_settings lmtp_default_settings = {
+static const struct lmtp_settings lmtp_default_settings = {
MEMBER(lmtp_proxy) FALSE
};
-static struct setting_parser_info *lmtp_setting_dependencies[] = {
+static const struct setting_parser_info *lmtp_setting_dependencies[] = {
&lda_setting_parser_info,
NULL
};
-struct setting_parser_info lmtp_setting_parser_info = {
+const struct setting_parser_info lmtp_setting_parser_info = {
MEMBER(module_name) "lmtp",
MEMBER(defines) lmtp_setting_defines,
MEMBER(defaults) &lmtp_default_settings,
bool lmtp_proxy;
};
-extern struct setting_parser_info lmtp_setting_parser_info;
+extern const struct setting_parser_info lmtp_setting_parser_info;
#endif
#define DEF(type, name) \
{ type, #name, offsetof(struct login_settings, name), NULL }
-static struct setting_define login_setting_defines[] = {
+static const struct setting_define login_setting_defines[] = {
DEF(SET_STR, login_trusted_networks),
DEF(SET_STR_VARS, login_greeting),
DEF(SET_STR, login_log_format_elements),
SETTING_DEFINE_LIST_END
};
-static struct login_settings login_default_settings = {
+static const struct login_settings login_default_settings = {
MEMBER(login_trusted_networks) "",
MEMBER(login_greeting) PACKAGE_NAME" ready.",
MEMBER(login_log_format_elements) "user=<%u> method=%m rip=%r lip=%l %c",
MEMBER(mail_max_userip_connections) 10
};
-struct setting_parser_info login_setting_parser_info = {
+const struct setting_parser_info login_setting_parser_info = {
MEMBER(module_name) "login",
MEMBER(defines) login_setting_defines,
MEMBER(defaults) &login_default_settings,
};
extern const struct setting_parser_info **login_set_roots;
-extern struct setting_parser_info login_setting_parser_info;
+extern const struct setting_parser_info login_setting_parser_info;
struct login_settings *
login_settings_read(struct master_service *service, pool_t pool,
static bool master_settings_verify(void *_set, pool_t pool,
const char **error_r);
-extern struct setting_parser_info service_setting_parser_info;
+extern const struct setting_parser_info service_setting_parser_info;
#undef DEF
#define DEF(type, name) \
{ type, #name, offsetof(struct file_listener_settings, name), NULL }
-static struct setting_define file_listener_setting_defines[] = {
+static const struct setting_define file_listener_setting_defines[] = {
DEF(SET_STR, path),
DEF(SET_UINT, mode),
DEF(SET_STR, user),
SETTING_DEFINE_LIST_END
};
-static struct file_listener_settings file_listener_default_settings = {
+static const struct file_listener_settings file_listener_default_settings = {
MEMBER(path) "",
MEMBER(mode) 0600,
MEMBER(user) "",
MEMBER(group) "",
};
-static struct setting_parser_info file_listener_setting_parser_info = {
+static const struct setting_parser_info file_listener_setting_parser_info = {
MEMBER(module_name) NULL,
MEMBER(defines) file_listener_setting_defines,
MEMBER(defaults) &file_listener_default_settings,
#define DEF(type, name) \
{ type, #name, offsetof(struct inet_listener_settings, name), NULL }
-static struct setting_define inet_listener_setting_defines[] = {
+static const struct setting_define inet_listener_setting_defines[] = {
DEF(SET_STR, address),
DEF(SET_UINT, port),
DEF(SET_BOOL, ssl),
SETTING_DEFINE_LIST_END
};
-static struct inet_listener_settings inet_listener_default_settings = {
+static const struct inet_listener_settings inet_listener_default_settings = {
MEMBER(address) "",
MEMBER(port) 0,
MEMBER(ssl) FALSE
};
-static struct setting_parser_info inet_listener_setting_parser_info = {
+static const struct setting_parser_info inet_listener_setting_parser_info = {
MEMBER(module_name) NULL,
MEMBER(defines) inet_listener_setting_defines,
MEMBER(defaults) &inet_listener_default_settings,
#define DEFLIST_UNIQUE(field, name, defines) \
{ SET_DEFLIST_UNIQUE, name, offsetof(struct service_settings, field), defines }
-static struct setting_define service_setting_defines[] = {
+static const struct setting_define service_setting_defines[] = {
DEF(SET_STR, name),
DEF(SET_STR, protocol),
DEF(SET_STR, type),
SETTING_DEFINE_LIST_END
};
-static struct service_settings service_default_settings = {
+static const struct service_settings service_default_settings = {
MEMBER(master_set) NULL,
MEMBER(name) "",
MEMBER(inet_listeners) ARRAY_INIT
};
-struct setting_parser_info service_setting_parser_info = {
+const struct setting_parser_info service_setting_parser_info = {
MEMBER(module_name) NULL,
MEMBER(defines) service_setting_defines,
MEMBER(defaults) &service_default_settings,
#define DEFLIST_UNIQUE(field, name, defines) \
{ SET_DEFLIST_UNIQUE, name, offsetof(struct master_settings, field), defines }
-static struct setting_define master_setting_defines[] = {
+static const struct setting_define master_setting_defines[] = {
DEF(SET_STR, base_dir),
DEF(SET_STR, libexec_dir),
DEF(SET_STR, protocols),
SETTING_DEFINE_LIST_END
};
-static struct master_settings master_default_settings = {
+static const struct master_settings master_default_settings = {
MEMBER(base_dir) PKG_RUNDIR,
MEMBER(libexec_dir) PKG_LIBEXECDIR,
MEMBER(protocols) "imap pop3 lmtp",
MEMBER(services) ARRAY_INIT
};
-struct setting_parser_info master_setting_parser_info = {
+const struct setting_parser_info master_setting_parser_info = {
MEMBER(module_name) "master",
MEMBER(defines) master_setting_defines,
MEMBER(defaults) &master_default_settings,
char **protocols_split;
};
-extern struct setting_parser_info master_setting_parser_info;
+extern const struct setting_parser_info master_setting_parser_info;
bool master_settings_do_fixes(const struct master_settings *set);
#include <stddef.h>
-static struct setting_define pop3_login_setting_defines[] = {
+static const struct setting_define pop3_login_setting_defines[] = {
SETTING_DEFINE_LIST_END
};
-static struct setting_parser_info *pop3_login_setting_dependencies[] = {
+static const struct setting_parser_info *pop3_login_setting_dependencies[] = {
&login_setting_parser_info,
NULL
};
-struct setting_parser_info pop3_login_setting_parser_info = {
+const struct setting_parser_info pop3_login_setting_parser_info = {
MEMBER(module_name) "pop3-login",
MEMBER(defines) pop3_login_setting_defines,
MEMBER(defaults) NULL,
#define DEFLIST(field, name, defines) \
{ SET_DEFLIST, name, offsetof(struct pop3_settings, field), defines }
-static struct setting_define pop3_setting_defines[] = {
+static const struct setting_define pop3_setting_defines[] = {
DEF(SET_BOOL, mail_debug),
DEF(SET_BOOL, pop3_no_flag_updates),
SETTING_DEFINE_LIST_END
};
-static struct pop3_settings pop3_default_settings = {
+static const struct pop3_settings pop3_default_settings = {
MEMBER(mail_debug) FALSE,
MEMBER(pop3_no_flag_updates) FALSE,
MEMBER(pop3_logout_format) "top=%t/%p, retr=%r/%b, del=%d/%m, size=%s"
};
-static struct setting_parser_info *pop3_setting_dependencies[] = {
+static const struct setting_parser_info *pop3_setting_dependencies[] = {
&mail_user_setting_parser_info,
NULL
};
-struct setting_parser_info pop3_setting_parser_info = {
+const struct setting_parser_info pop3_setting_parser_info = {
MEMBER(module_name) "pop3",
MEMBER(defines) pop3_setting_defines,
MEMBER(defaults) &pop3_default_settings,
enum pop3_client_workarounds num;
};
-static struct pop3_client_workaround_list pop3_client_workaround_list[] = {
+static const struct pop3_client_workaround_list pop3_client_workaround_list[] = {
{ "outlook-no-nuls", WORKAROUND_OUTLOOK_NO_NULS },
{ "oe-ns-eoh", WORKAROUND_OE_NS_EOH },
{ NULL, 0 }
const char **error_r)
{
enum pop3_client_workarounds client_workarounds = 0;
- struct pop3_client_workaround_list *list;
+ const struct pop3_client_workaround_list *list;
const char *const *str;
str = t_strsplit_spaces(set->pop3_client_workarounds, " ,");
enum pop3_client_workarounds parsed_workarounds;
};
-extern struct setting_parser_info pop3_setting_parser_info;
+extern const struct setting_parser_info pop3_setting_parser_info;
#endif
#define DEF(type, name) \
{ type, #name, offsetof(struct ssl_params_settings, name), NULL }
-static struct setting_define ssl_params_setting_defines[] = {
+static const struct setting_define ssl_params_setting_defines[] = {
DEF(SET_UINT, ssl_parameters_regenerate),
SETTING_DEFINE_LIST_END
};
-static struct ssl_params_settings ssl_params_default_settings = {
+static const struct ssl_params_settings ssl_params_default_settings = {
MEMBER(ssl_parameters_regenerate) 24*7
};
-struct setting_parser_info ssl_params_setting_parser_info = {
+const struct setting_parser_info ssl_params_setting_parser_info = {
MEMBER(module_name) "ssl-params",
MEMBER(defines) ssl_params_setting_defines,
MEMBER(defaults) &ssl_params_default_settings,