]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Changed all settings related structs to const and changed APIs to make it work.
authorTimo Sirainen <tss@iki.fi>
Sat, 24 Oct 2009 00:10:17 +0000 (20:10 -0400)
committerTimo Sirainen <tss@iki.fi>
Sat, 24 Oct 2009 00:10:17 +0000 (20:10 -0400)
--HG--
branch : HEAD

33 files changed:
src/auth/auth-settings.c
src/config/config-request.c
src/config/settings-get.pl
src/dict/dict-settings.c
src/dict/dict-settings.h
src/imap-login/imap-login-settings.c
src/imap/imap-settings.c
src/imap/imap-settings.h
src/lib-dict/dict-sql-settings.c
src/lib-lda/lda-settings.c
src/lib-lda/lda-settings.h
src/lib-master/master-service-settings.c
src/lib-master/master-service-settings.h
src/lib-settings/settings-parser.c
src/lib-settings/settings-parser.h
src/lib-settings/settings.c
src/lib-settings/settings.h
src/lib-storage/index/dbox-multi/mdbox-settings.c
src/lib-storage/index/maildir/maildir-settings.c
src/lib-storage/index/mbox/mbox-settings.c
src/lib-storage/mail-storage-service.c
src/lib-storage/mail-storage-settings.c
src/lib-storage/mail-storage-settings.h
src/lmtp/lmtp-settings.c
src/lmtp/lmtp-settings.h
src/login-common/login-settings.c
src/login-common/login-settings.h
src/master/master-settings.c
src/master/master-settings.h
src/pop3-login/pop3-login-settings.c
src/pop3/pop3-settings.c
src/pop3/pop3-settings.h
src/ssl-params/ssl-params-settings.c

index e4bf590e883ff2019515f108355dc8d23b3ac40f..4230541d329e8b9319739cfdc24023da6641e87b 100644 (file)
@@ -8,8 +8,8 @@
 
 #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);
 
@@ -17,7 +17,7 @@ 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),
@@ -25,7 +25,7 @@ static struct setting_define auth_passdb_setting_defines[] = {
        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,
@@ -41,14 +41,14 @@ struct setting_parser_info auth_passdb_setting_parser_info = {
 #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,
@@ -68,7 +68,7 @@ struct setting_parser_info auth_userdb_setting_parser_info = {
 #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),
@@ -100,7 +100,7 @@ static struct setting_define auth_setting_defines[] = {
        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) "",
@@ -130,7 +130,7 @@ static struct auth_settings auth_default_settings = {
        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,
index c4be0a8b3c7d2fcc298f4b99d5e12f34848815be..3d90f6ee9f504ccaa3dd721ab3f8ca259ac696af 100644 (file)
@@ -26,7 +26,7 @@ static bool parsers_are_connected(const struct setting_parser_info *root,
                                  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. */
 
index b91d1ef1ebcd47349bb88b4f68d175518700610a..4c719f46c8684b3a3346d5e1db5eaf2c24d56de7 100755 (executable)
@@ -31,11 +31,11 @@ foreach my $file (@ARGV) {
          /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 .= $_;
@@ -62,7 +62,7 @@ foreach my $file (@ARGV) {
          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;
          }
index 07c074346dbddb65d9a3b0c290ca48218939c7dd..d1751fdc9869eb2097007df5618a1132e139a694 100644 (file)
@@ -8,7 +8,7 @@
 #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 },
@@ -16,13 +16,13 @@ static struct setting_define dict_setting_defines[] = {
        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,
@@ -33,4 +33,4 @@ struct setting_parser_info dict_setting_parser_info = {
        MEMBER(parent_offset) (size_t)-1
 };
 
-struct dict_settings *dict_settings;
+const struct dict_settings *dict_settings;
index cb906e8db31d0e8a0143c93c03d2f864457e2399..75b45175d9a68f46b180817b9166f981c47bda9c 100644 (file)
@@ -7,7 +7,7 @@ struct 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
index 9ca1a5f989dee42200ff20b39c34f6e11ab164be..3a108e33fd64d6e36834ba79b0298a81606cdcb5 100644 (file)
 #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,
index 955652297f5c54c2fdd76968f76b163121751d5f..1c736e17345eff94be5af21da02bbd47cbef7b7d 100644 (file)
@@ -19,7 +19,7 @@ static bool imap_settings_verify(void *_set, pool_t pool,
 #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),
@@ -33,7 +33,7 @@ static struct setting_define imap_setting_defines[] = {
        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
@@ -48,12 +48,12 @@ static struct imap_settings imap_default_settings = {
        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,
@@ -74,7 +74,7 @@ struct imap_client_workaround_list {
        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 },
@@ -87,7 +87,7 @@ imap_settings_parse_workarounds(struct imap_settings *set,
                                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, " ,");
index 2c4db59747e82ebe6797677ad6275608e019c4cf..238d9f9cf786fc259aff8b9b3b8c0e53a75e63ca 100644 (file)
@@ -26,6 +26,6 @@ struct imap_settings {
        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
index c9a16e68335144a130fb6dcd39c6ebb0157fffc3..2d6a9d71c18090f2abfe618ee7db70fed2a10c3e 100644 (file)
@@ -29,7 +29,7 @@ struct setting_parser_ctx {
 
 #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),
index 3536ee8667790512520ab50a21fc8675fb467787..eec615ce5b5f388a21ecd53c8e1813936b519132 100644 (file)
@@ -16,7 +16,7 @@ static bool lda_settings_check(void *_set, pool_t pool, const char **error_r);
 #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),
@@ -30,7 +30,7 @@ static struct setting_define lda_setting_defines[] = {
        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",
@@ -43,12 +43,12 @@ static struct lda_settings lda_default_settings = {
        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,
index c688773569c9bcc5848463544bf2b5416ea0faf2..238a29ce142a96e70f1cfe966e32734ff31cd742 100644 (file)
@@ -15,6 +15,6 @@ struct lda_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
index 0f657d33f50fc8affd8a4dc7a820b0c110e1898d..2cf82bc8fc464261cc4697be4e0c2dc80e2caad9 100644 (file)
@@ -24,7 +24,7 @@
 #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),
@@ -36,7 +36,7 @@ static struct setting_define master_service_setting_defines[] = {
        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) "",
@@ -46,7 +46,7 @@ static struct master_service_settings master_service_default_settings = {
        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,
@@ -213,6 +213,7 @@ int master_service_settings_read(struct master_service *service,
 
        if (input->dyn_parsers != NULL) {
                settings_parser_info_update(service->set_pool,
+                                           input->dyn_parsers_parent,
                                            input->dyn_parsers);
        }
 
index 8f0bae94d1727ccbc22d07d31beb03495fb44240..345e7e974d92a52d3fed5543a5dc98b9222c00a6 100644 (file)
@@ -20,6 +20,7 @@ struct master_service_settings {
 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;
 
@@ -29,7 +30,7 @@ struct master_service_settings_input {
        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,
index 9ccb1b11cdba62e44b97c730ba712353ecd1b0c0..1a3c7e81843da47da69e1818533cbc2717b413c3 100644 (file)
@@ -1072,10 +1072,10 @@ settings_changes_dup(const struct setting_parser_info *info,
 }
 
 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;
@@ -1085,8 +1085,6 @@ info_update_real(pool_t pool, const struct dynamic_settings_parser *parsers)
        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++)
@@ -1147,10 +1145,11 @@ info_update_real(pool_t pool, const struct dynamic_settings_parser *parsers)
 }
 
 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;
 }
 
index 679a6cc4b1c03e982bb15719d1c98e170d62bb02..248da82bf2d6b0c2579ba7d447af54bd3808877b 100644 (file)
@@ -61,10 +61,10 @@ struct setting_parser_info {
        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;
 
 };
@@ -168,6 +168,7 @@ settings_parser_dup(struct setting_parser_context *old_ctx, pool_t new_pool);
    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
index adc828792cc3f259f8b487e8244b2f72685aeae5..61be436be0c29ee005059668c7c36b1dbf0f39f4 100644 (file)
@@ -51,10 +51,10 @@ static const char *get_uint(const char *value, unsigned int *result)
 }
 
 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) {
index 9cfc6186916f181122ce4b04033b814a5d7e233c..dd1ff2d850571041d2df7462c744a4572b410af9 100644 (file)
@@ -37,7 +37,7 @@ typedef bool settings_section_callback_t(const char *type, const char *name,
 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,
index f4cdb05044f20e20316e4957ebd72e88f4337681..ba564412f7e37c724bfedb6f6d08d4c0c60fb301 100644 (file)
@@ -14,7 +14,7 @@
 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),
@@ -24,7 +24,7 @@ static struct setting_define mdbox_setting_defines[] = {
        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,
@@ -32,7 +32,7 @@ static struct mdbox_settings mdbox_default_settings = {
        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,
index 7f218e14db20285e56adc7456d96182138f89e2c..9134669ce45945ad22691e45851ae3fe7f4a0c63 100644 (file)
@@ -11,7 +11,7 @@
 #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),
@@ -20,14 +20,14 @@ static struct setting_define maildir_setting_defines[] = {
        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,
index dcaa11a9d6d25ac97ba33eed13300585d6639d8d..6c32af2e93951fa5f04ab6e45a5c4b6edabe46e9 100644 (file)
@@ -11,7 +11,7 @@
 #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),
@@ -24,7 +24,7 @@ static struct setting_define mbox_setting_defines[] = {
        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,
@@ -35,7 +35,7 @@ static struct mbox_settings mbox_default_settings = {
        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,
index 841416c0547b2f9068541cd81316af308729859c..5a3e849f6cff17595bb5dec423634b1ffc8f8629 100644 (file)
@@ -525,7 +525,7 @@ settings_parser_update_children_parent(struct setting_parser_info *parent,
        }
 }
 
-static void
+static struct setting_parser_info *
 dyn_parsers_update_parent(pool_t pool,
                          struct master_service_settings_input *input)
 {
@@ -565,6 +565,7 @@ dyn_parsers_update_parent(pool_t pool,
                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,
@@ -584,7 +585,8 @@ 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;
index 6f2a04c9746649dc5208058540554e50b8c457a5..240b66ad9d50c09c63eb6662e7db47cc2fd3c398 100644 (file)
@@ -20,7 +20,7 @@ static bool mail_user_settings_check(void *_set, pool_t pool, const char **error
 #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),
@@ -42,7 +42,7 @@ static struct setting_define mail_storage_setting_defines[] = {
        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",
@@ -62,7 +62,7 @@ struct mail_storage_settings mail_storage_default_settings = {
        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,
@@ -80,7 +80,7 @@ struct setting_parser_info mail_storage_setting_parser_info = {
 #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),
@@ -95,7 +95,7 @@ static struct setting_define mail_namespace_setting_defines[] = {
        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) "",
@@ -108,7 +108,7 @@ struct mail_namespace_settings mail_namespace_default_settings = {
        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,
@@ -130,7 +130,7 @@ struct setting_parser_info mail_namespace_setting_parser_info = {
        { 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),
 
@@ -158,7 +158,7 @@ static struct setting_define mail_user_setting_defines[] = {
        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",
 
@@ -184,7 +184,7 @@ static struct mail_user_settings mail_user_default_settings = {
        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,
index 16e84011d137ed4749d9e72ce172301386cfbd5a..900bb583d6039e4db7018d8d31925655c4ba6cea 100644 (file)
@@ -69,10 +69,10 @@ struct mail_user_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,
index f2e2888f8f988d411db98090934b332a024ee733..fe4c91dd94162154188c3936c058d71743cb9ef3 100644 (file)
 #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,
index 4191770b2ff42290560b4d8879ffe5b2d53af80c..b54b3444faa17657889f1245baf0889def901270 100644 (file)
@@ -5,6 +5,6 @@ struct lmtp_settings {
        bool lmtp_proxy;
 };
 
-extern struct setting_parser_info lmtp_setting_parser_info;
+extern const struct setting_parser_info lmtp_setting_parser_info;
 
 #endif
index 8f4841a1b27888af555fcefd37d3bf43628a81e6..e21870bf3ecaba6181a2dadb3f2a6095c8958491 100644 (file)
@@ -16,7 +16,7 @@ static bool login_settings_check(void *_set, pool_t pool, const char **error_r);
 #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),
@@ -45,7 +45,7 @@ static struct setting_define login_setting_defines[] = {
        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",
@@ -72,7 +72,7 @@ static struct login_settings login_default_settings = {
        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,
index 7c4b2e92ccd171664114c087d85142023fb55489..8e809877c8e6643584f477cf0a8d1a6051255756 100644 (file)
@@ -33,7 +33,7 @@ struct login_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,
index 0f3a1c0fa51fcf3ebb7bb665969108e2fcc82e00..1828918218f813d4306e6112253221d16f2e8e8e 100644 (file)
 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),
@@ -35,14 +35,14 @@ static struct setting_define file_listener_setting_defines[] = {
        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,
@@ -58,7 +58,7 @@ static struct setting_parser_info file_listener_setting_parser_info = {
 #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),
@@ -66,13 +66,13 @@ static struct setting_define inet_listener_setting_defines[] = {
        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,
@@ -94,7 +94,7 @@ static struct setting_parser_info inet_listener_setting_parser_info = {
 #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),
@@ -123,7 +123,7 @@ static struct setting_define service_setting_defines[] = {
        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) "",
@@ -149,7 +149,7 @@ static struct service_settings service_default_settings = {
        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,
@@ -168,7 +168,7 @@ struct setting_parser_info service_setting_parser_info = {
 #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),
@@ -193,7 +193,7 @@ static struct setting_define master_setting_defines[] = {
        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",
@@ -216,7 +216,7 @@ static struct master_settings master_default_settings = {
        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,
index ff524c794f4db01ff390a3d2237c159cc2cce480..97b525043794c6d49f5dc119cc87b9f5b40084ec 100644 (file)
@@ -76,7 +76,7 @@ struct master_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);
 
index e33f88205bf0b31e174b5dea8120a4c9352122ba..569ed53d67b41954aef0bb884c1e73dea187b5db 100644 (file)
@@ -7,16 +7,16 @@
 
 #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,
index 42dd6f06bb27c7476aee98d05c0551c7b7c1c3c4..9eac13be8e4a71055ec33e9701c4da12fdc94da3 100644 (file)
@@ -19,7 +19,7 @@ static bool pop3_settings_verify(void *_set, pool_t pool,
 #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),
@@ -33,7 +33,7 @@ static struct setting_define pop3_setting_defines[] = {
        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,
@@ -45,12 +45,12 @@ static struct pop3_settings pop3_default_settings = {
        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,
@@ -71,7 +71,7 @@ struct pop3_client_workaround_list {
        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 }
@@ -82,7 +82,7 @@ pop3_settings_parse_workarounds(struct pop3_settings *set,
                                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, " ,");
index 4afdc24885443f420ce1b53e0c1b1f68177cbd5a..50b05f2028db3408a2bf1c3987839c6602a200d2 100644 (file)
@@ -25,6 +25,6 @@ struct pop3_settings {
        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
index 2c5688cf9823873287300a8b0d56de041ec1c5f0..1f94765fafb701a1bea094f8b7a3684e49ac1466 100644 (file)
 #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,