]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
struct setting_parser_info now specifies the module name.
authorTimo Sirainen <tss@iki.fi>
Tue, 20 Oct 2009 21:36:06 +0000 (17:36 -0400)
committerTimo Sirainen <tss@iki.fi>
Tue, 20 Oct 2009 21:36:06 +0000 (17:36 -0400)
--HG--
branch : HEAD

23 files changed:
src/auth/auth-settings.c
src/config/all-settings.h
src/config/config-filter.c
src/config/config-parser.c
src/config/config-parser.h
src/config/config-request.c
src/config/doveconf.c
src/config/settings-get.pl
src/dict/dict-settings.c
src/imap/imap-settings.c
src/lib-lda/lda-settings.c
src/lib-master/master-service-settings.c
src/lib-settings/settings-parser.c
src/lib-settings/settings-parser.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-settings.c
src/lmtp/lmtp-settings.c
src/login-common/login-settings.c
src/master/master-settings.c
src/pop3/pop3-settings.c
src/ssl-params/ssl-params-settings.c

index 74ba8a0d1818ee0a4c52a5a952264c83452d4767..e4bf590e883ff2019515f108355dc8d23b3ac40f 100644 (file)
@@ -26,6 +26,7 @@ static struct setting_define auth_passdb_setting_defines[] = {
 };
 
 struct setting_parser_info auth_passdb_setting_parser_info = {
+       MEMBER(module_name) NULL,
        MEMBER(defines) auth_passdb_setting_defines,
        MEMBER(defaults) NULL,
 
@@ -48,6 +49,7 @@ static struct setting_define auth_userdb_setting_defines[] = {
 };
 
 struct setting_parser_info auth_userdb_setting_parser_info = {
+       MEMBER(module_name) NULL,
        MEMBER(defines) auth_userdb_setting_defines,
        MEMBER(defaults) NULL,
 
@@ -129,6 +131,7 @@ static struct auth_settings auth_default_settings = {
 };
 
 struct setting_parser_info auth_setting_parser_info = {
+       MEMBER(module_name) "auth",
        MEMBER(defines) auth_setting_defines,
        MEMBER(defaults) &auth_default_settings,
 
index d04335a764d1806627631b6b1cea3d4511c59c55..4e5a1fe666f639c1d504815b37b1fb4b27d63b21 100644 (file)
@@ -1,10 +1,6 @@
 #ifndef ALL_SETTINGS_H
 #define ALL_SETTINGS_H
 
-struct all_settings_root {
-       const char *module_name;
-       struct setting_parser_info *root;
-};
-extern const struct all_settings_root all_roots[];
+extern const struct setting_parser_info *all_roots[];
 
 #endif
index 9843f6d53b7117621d8ddc7ffe5cdf104256bb91..0ae0be68f4adf970c1731c66e0b93a8a24343e4e 100644 (file)
@@ -148,7 +148,7 @@ config_module_parser_apply_changes(struct config_module_parser *dest,
 {
        unsigned int i;
 
-       for (i = 0; dest[i].module_name != NULL; i++) {
+       for (i = 0; dest[i].root != NULL; i++) {
                if (settings_parser_apply_changes(dest[i].parser,
                                                  src->parsers[i].parser, pool,
                                                  error_r) < 0) {
@@ -175,7 +175,7 @@ int config_filter_parsers_get(struct config_filter_context *ctx, pool_t pool,
 
        /* all of them should have the same number of parsers.
           duplicate our initial parsers from the first match */
-       for (count = 0; src[0]->parsers[count].module_name != NULL; count++) ;
+       for (count = 0; src[0]->parsers[count].root != NULL; count++) ;
        dest = p_new(pool, struct config_module_parser, count + 1);
        for (i = 0; i < count; i++) {
                dest[i] = src[0]->parsers[i];
@@ -206,6 +206,6 @@ void config_filter_parsers_free(struct config_module_parser *parsers)
 {
        unsigned int i;
 
-       for (i = 0; parsers[i].module_name != NULL; i++)
+       for (i = 0; parsers[i].root != NULL; i++)
                settings_parser_deinit(&parsers[i].parser);
 }
index f30f15638f4f03812d65212164b3e2ec0fec039d..1683059c8879c606cdfb483389afe2f33c49618a 100644 (file)
@@ -27,7 +27,7 @@ struct config_section_stack {
        struct config_section_stack *prev;
 
        struct config_filter filter;
-       /* module_name=NULL-terminated list of parsers */
+       /* root=NULL-terminated list of parsers */
        struct config_module_parser *parsers;
        unsigned int pathlen;
 };
@@ -106,7 +106,7 @@ config_apply_line(struct parser_context *ctx, const char *key,
        bool found = FALSE;
        int ret;
 
-       for (l = ctx->cur_section->parsers; l->module_name != NULL; l++) {
+       for (l = ctx->cur_section->parsers; l->root != NULL; l++) {
                ret = settings_parse_line(l->parser, line);
                if (ret > 0) {
                        found = TRUE;
@@ -146,13 +146,12 @@ config_module_parsers_init(pool_t pool)
        struct config_module_parser *dest;
        unsigned int i, count;
 
-       for (count = 0; all_roots[count].module_name != NULL; count++) ;
+       for (count = 0; all_roots[count] != NULL; count++) ;
 
        dest = p_new(pool, struct config_module_parser, count + 1);
        for (i = 0; i < count; i++) {
-               dest[i].module_name = all_roots[i].module_name;
-               dest[i].root = all_roots[i].root;
-               dest[i].parser = settings_parser_init(pool, all_roots[i].root,
+               dest[i].root = all_roots[i];
+               dest[i].parser = settings_parser_init(pool, all_roots[i],
                                                      settings_parser_flags);
        }
        return dest;
@@ -266,7 +265,7 @@ config_filter_parser_check(struct parser_context *ctx,
                           const struct config_module_parser *p,
                           const char **error_r)
 {
-       for (; p->module_name != NULL; p++) {
+       for (; p->root != NULL; p++) {
                settings_parse_var_skip(p->parser);
                if (!settings_parser_check(p->parser, ctx->pool, error_r))
                        return -1;
@@ -589,14 +588,13 @@ int config_parse_file(const char *path, bool expand_files,
        ctx.pool = pool_alloconly_create("config file parser", 1024*64);
        ctx.path = path;
 
-       for (count = 0; all_roots[count].module_name != NULL; count++) ;
+       for (count = 0; all_roots[count] != NULL; count++) ;
        ctx.root_parsers =
                p_new(ctx.pool, struct config_module_parser, count+1);
        for (i = 0; i < count; i++) {
-               ctx.root_parsers[i].module_name = all_roots[i].module_name;
-               ctx.root_parsers[i].root = all_roots[i].root;
+               ctx.root_parsers[i].root = all_roots[i];
                ctx.root_parsers[i].parser =
-                       settings_parser_init(ctx.pool, all_roots[i].root,
+                       settings_parser_init(ctx.pool, all_roots[i],
                                             settings_parser_flags);
        }
 
index 03855b3e55629fb0c889bbba3966d851daf60261..800c81d9d8d83d6eb7b4a562701eac2194e65224 100644 (file)
@@ -2,8 +2,7 @@
 #define CONFIG_PARSER_H
 
 struct config_module_parser {
-       const char *module_name;
-       struct setting_parser_info *root;
+       const struct setting_parser_info *root;
        struct setting_parser_context *parser;
        void *settings;
 };
index 90074fd77e3b17c057ffeec45ad70961805e3504..55644d0abca34f4bdbf5e947e79a46509c92eacd 100644 (file)
@@ -22,10 +22,11 @@ struct settings_export_context {
        void *context;
 };
 
-static bool parsers_are_connected(struct setting_parser_info *root,
-                                 struct setting_parser_info *info)
+static bool parsers_are_connected(const struct setting_parser_info *root,
+                                 const struct setting_parser_info *info)
 {
-       struct setting_parser_info *const *dep, *p;
+       const struct setting_parser_info *p;
+       struct setting_parser_info *const *dep;
 
        /* we're trying to find info or its parents from root's dependencies. */
 
@@ -51,15 +52,15 @@ config_module_parser_is_in_service(const struct config_module_parser *list,
 {
        struct config_module_parser *l;
 
-       if (strcmp(list->module_name, module) == 0)
+       if (strcmp(list->root->module_name, module) == 0)
                return TRUE;
        if (list->root == &master_service_setting_parser_info) {
                /* everyone wants master service settings */
                return TRUE;
        }
 
-       for (l = config_module_parsers; l->module_name != NULL; l++) {
-               if (strcmp(l->module_name, module) != 0)
+       for (l = config_module_parsers; l->root != NULL; l++) {
+               if (strcmp(l->root->module_name, module) != 0)
                        continue;
 
                /* see if we can find a way to get from the original parser
@@ -260,7 +261,7 @@ int config_request_handle(const struct config_filter *filter,
        ctx.keys = hash_table_create(default_pool, ctx.pool, 0,
                                     str_hash, (hash_cmp_callback_t *)strcmp);
 
-       for (i = 0; parsers[i].module_name != NULL; i++) {
+       for (i = 0; parsers[i].root != NULL; i++) {
                parser = &parsers[i];
                if (*module != '\0' &&
                    !config_module_parser_is_in_service(parser, module))
index 5872a3e40be961ddd397ae565f82ff5d698dc6b2..fff0005caef20bc7fcc6c6e0d480e0306fb5e12f 100644 (file)
@@ -188,8 +188,8 @@ static const char *get_mail_location(void)
        const char *const *value;
        const void *set;
 
-       for (l = config_module_parsers; l->module_name != NULL; l++) {
-               if (strcmp(l->module_name, "mail") != 0)
+       for (l = config_module_parsers; l->root != NULL; l++) {
+               if (strcmp(l->root->module_name, "mail") != 0)
                        continue;
 
                set = settings_parser_get(l->parser);
index c2d200ac62a6888f66670043180a02ba180c0370..b91d1ef1ebcd47349bb88b4f68d175518700610a 100755 (executable)
@@ -22,6 +22,7 @@ foreach my $file (@ARGV) {
   my $externs = "";
   my $code = "";
   my %funcs;
+  my $cur_name = "";
   
   while (<$f>) {
     my $write = 0;
@@ -32,8 +33,7 @@ foreach my $file (@ARGV) {
        $state++;
       } elsif (/^(static )?struct setting_parser_info (.*) = {/) {
        $state++;
-       my $name = $2;
-       $parsers{$name} = 1 if ($name !~ /\*/);
+       $cur_name = $2;
       } elsif (/^extern struct setting_parser_info (.*);/) {
        $externs .= "extern struct setting_parser_info $1;\n";
       } elsif (/\/\* <settings checks> \*\//) {
@@ -55,6 +55,9 @@ foreach my $file (@ARGV) {
     
     if ($state == 1 || $state == 3) {
       if ($state == 1) {
+       if (/MEMBER\(module_name\) "(.*)"/) {
+         $parsers{$cur_name} = $1;
+       }
        if (/DEFLIST.*".*",(.*)$/) {
          my $value = $1;
          if ($value =~ /.*&(.*)\)/) {
@@ -87,15 +90,12 @@ foreach my $file (@ARGV) {
   close $f;
 }
 
-print "const struct all_settings_root all_roots[] = {\n";
+print "const struct setting_parser_info *all_roots[] = {\n";
 foreach my $name (keys %parsers) {
-  next if (!$parsers{$name});
+  my $module = $parsers{$name};
+  next if (!$module);
 
-  my $module = "";
-  if ($name =~ /^([^_]*)/) {
-    $module = $1;
-  }
-  print "  { \"$module\", &".$name." }, \n";
+  print "\t&".$name.", \n";
 }
-print "  { NULL, NULL }\n";
+print "\tNULL\n";
 print "};\n";
index aa7d87c93aa7d5b0401004ab5977f179c6f0d8a3..07c074346dbddb65d9a3b0c290ca48218939c7dd 100644 (file)
@@ -23,6 +23,7 @@ struct dict_settings dict_default_settings = {
 };
 
 struct setting_parser_info dict_setting_parser_info = {
+       MEMBER(module_name) "dict",
        MEMBER(defines) dict_setting_defines,
        MEMBER(defaults) &dict_default_settings,
 
index beddf14baa0f66303c62942cd76fae45b2a04f4f..86204b9fa11ffcd69efc176979769ce92357f0c1 100644 (file)
@@ -56,6 +56,7 @@ static struct setting_parser_info *imap_setting_dependencies[] = {
 };
 
 struct setting_parser_info imap_setting_parser_info = {
+       MEMBER(module_name) "imap",
        MEMBER(defines) imap_setting_defines,
        MEMBER(defaults) &imap_default_settings,
 
index f73b442536555671e8242a8ee8b747882d75cc6e..3536ee8667790512520ab50a21fc8675fb467787 100644 (file)
@@ -49,6 +49,7 @@ static struct setting_parser_info *lda_setting_dependencies[] = {
 };
 
 struct setting_parser_info lda_setting_parser_info = {
+       MEMBER(module_name) "lda",
        MEMBER(defines) lda_setting_defines,
        MEMBER(defaults) &lda_default_settings,
 
index 5c6d91f7a267f4dd23c7b4afd2ce88273538d8d8..b26713d10f1c1a94d0d4ec1150066711063ac2c1 100644 (file)
@@ -45,6 +45,7 @@ static struct master_service_settings master_service_default_settings = {
 };
 
 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,
 
index 5a99c49be02e0899fcd2e9a3586fe94e8ead1df9..139335a70256b1d0d65370aa473d8a16416e6057 100644 (file)
@@ -51,6 +51,7 @@ struct setting_parser_context {
 };
 
 static const struct setting_parser_info strlist_info = {
+       MEMBER(module_name) NULL,
        MEMBER(defines) NULL,
        MEMBER(defaults) NULL,
 
index aa6bf68c5e6f1f73d60290e397e2440fbd012db2..f84e1466dec3c5b95ecbb557be80716318feef40 100644 (file)
@@ -50,6 +50,7 @@ struct setting_define {
          #name, offsetof(struct struct_name, name), NULL }
 
 struct setting_parser_info {
+       const char *module_name;
        const struct setting_define *defines;
        const void *defaults;
 
index 83210a06357d0aa2b7da4ec50bb59bb96672582b..f4cdb05044f20e20316e4957ebd72e88f4337681 100644 (file)
@@ -33,6 +33,7 @@ static struct mdbox_settings mdbox_default_settings = {
 };
 
 static struct setting_parser_info mdbox_setting_parser_info = {
+       MEMBER(module_name) "mdbox",
        MEMBER(defines) mdbox_setting_defines,
        MEMBER(defaults) &mdbox_default_settings,
 
index 6b2a902cadccd333a239d757b3c2cafce57d119a..7f218e14db20285e56adc7456d96182138f89e2c 100644 (file)
@@ -28,6 +28,7 @@ static struct maildir_settings maildir_default_settings = {
 };
 
 static struct setting_parser_info maildir_setting_parser_info = {
+       MEMBER(module_name) "maildir",
        MEMBER(defines) maildir_setting_defines,
        MEMBER(defaults) &maildir_default_settings,
 
index 42fe30aaf23f010141f3f8f89861db4f21f7702e..dcaa11a9d6d25ac97ba33eed13300585d6639d8d 100644 (file)
@@ -36,6 +36,7 @@ static struct mbox_settings mbox_default_settings = {
 };
 
 static struct setting_parser_info mbox_setting_parser_info = {
+       MEMBER(module_name) "mbox",
        MEMBER(defines) mbox_setting_defines,
        MEMBER(defaults) &mbox_default_settings,
 
index a5bce7039615ef63edc258a109a7469e7c8e9fd7..94952545a952ad12f45483ec8e8f87473135d760 100644 (file)
@@ -65,6 +65,7 @@ struct mail_storage_settings mail_storage_default_settings = {
 };
 
 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,
 
@@ -110,6 +111,7 @@ struct mail_namespace_settings mail_namespace_default_settings = {
 };
 
 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,
 
@@ -185,6 +187,7 @@ static struct mail_user_settings mail_user_default_settings = {
 };
 
 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 3710b375a9cf75888cd7a3702013e29d4db2e622..b69833cbb41be9b26fb58c14e87951be0d4eb6f1 100644 (file)
@@ -23,6 +23,7 @@ static struct lmtp_settings lmtp_default_settings = {
 };
 
 struct setting_parser_info lmtp_setting_parser_info = {
+       MEMBER(module_name) "lmtp",
        MEMBER(defines) lmtp_setting_defines,
        MEMBER(defaults) &lmtp_default_settings,
 
index a27e02a8cd5b52705d7ff912888a2225dbe5d111..5bd96fc9789054dd915c996023b51616de2b8336 100644 (file)
@@ -71,6 +71,7 @@ static struct login_settings login_default_settings = {
 };
 
 struct setting_parser_info login_setting_parser_info = {
+       MEMBER(module_name) "login",
        MEMBER(defines) login_setting_defines,
        MEMBER(defaults) &login_default_settings,
 
index 6c74d5ec149703d790f8130392fa7f0f6aa0b03d..c29a748cef41ede47f54c11272ff17d2d06f3346 100644 (file)
@@ -43,6 +43,7 @@ static struct file_listener_settings file_listener_default_settings = {
 };
 
 static 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,
 
@@ -72,6 +73,7 @@ static struct inet_listener_settings inet_listener_default_settings = {
 };
 
 static 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,
 
@@ -145,6 +147,7 @@ static struct service_settings service_default_settings = {
 };
 
 struct setting_parser_info service_setting_parser_info = {
+       MEMBER(module_name) NULL,
        MEMBER(defines) service_setting_defines,
        MEMBER(defaults) &service_default_settings,
 
@@ -211,6 +214,7 @@ static struct master_settings master_default_settings = {
 };
 
 struct setting_parser_info master_setting_parser_info = {
+       MEMBER(module_name) "master",
        MEMBER(defines) master_setting_defines,
        MEMBER(defaults) &master_default_settings,
 
index 0ee652a8f9f7b527652cbc5af129f882b5eceea7..e9f18e76e4fe3c36b0b8086dadcfaff136d975b7 100644 (file)
@@ -53,6 +53,7 @@ static struct setting_parser_info *pop3_setting_dependencies[] = {
 };
 
 struct setting_parser_info pop3_setting_parser_info = {
+       MEMBER(module_name) "pop3",
        MEMBER(defines) pop3_setting_defines,
        MEMBER(defaults) &pop3_default_settings,
 
index 60f8414802b36bfb51f1ab40f7718d218af715da..2c5688cf9823873287300a8b0d56de041ec1c5f0 100644 (file)
@@ -24,6 +24,7 @@ static struct ssl_params_settings ssl_params_default_settings = {
 };
 
 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,