dovecot-2.0: lib-master: Added support for parse_full_config inp...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Oct 6 21:35:20 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/d63b48a452f1
changeset: 12258:d63b48a452f1
user: Timo Sirainen <tss at iki.fi>
date: Wed Oct 06 19:35:06 2010 +0100
description:
lib-master: Added support for parse_full_config input option for settings parsing.
diffstat:
src/lib-master/master-service-settings.c | 33 ++++++++++++++++++++++-----------
src/lib-master/master-service-settings.h | 1 +
2 files changed, 23 insertions(+), 11 deletions(-)
diffs (62 lines):
diff -r 8d36d8f5fcef -r d63b48a452f1 src/lib-master/master-service-settings.c
--- a/src/lib-master/master-service-settings.c Wed Oct 06 19:34:41 2010 +0100
+++ b/src/lib-master/master-service-settings.c Wed Oct 06 19:35:06 2010 +0100
@@ -88,6 +88,7 @@
const struct master_service_settings_input *input)
{
const char **conf_argv, *binary_path = service->argv[0];
+ unsigned int i, argv_max_count;
(void)t_binary_abspath(&binary_path);
@@ -97,18 +98,28 @@
env_put("USE_SYSEXITS=1");
/* @UNSAFE */
- conf_argv = t_new(const char *, 8 + (service->argc + 1) + 1);
- conf_argv[0] = DOVECOT_CONFIG_BIN_PATH;
- conf_argv[1] = "-f";
- conf_argv[2] = t_strconcat("service=", service->name, NULL);
- conf_argv[3] = "-m";
- conf_argv[4] = input->module == NULL ? "" : input->module;
- conf_argv[5] = "-c";
- conf_argv[6] = service->config_path;
- conf_argv[7] = "-e";
- conf_argv[8] = binary_path;
- memcpy(conf_argv+9, service->argv + 1,
+ i = 0;
+ argv_max_count = 9 + (service->argc + 1) + 1;
+ conf_argv = t_new(const char *, argv_max_count);
+ conf_argv[i++] = DOVECOT_CONFIG_BIN_PATH;
+ conf_argv[i++] = "-f";
+ conf_argv[i++] = t_strconcat("service=", service->name, NULL);
+ conf_argv[i++] = "-c";
+ conf_argv[i++] = service->config_path;
+ if (input->module != NULL) {
+ conf_argv[i++] = "-m";
+ conf_argv[i++] = input->module;
+ }
+ if (input->parse_full_config)
+ conf_argv[i++] = "-p";
+
+ conf_argv[i++] = "-e";
+ conf_argv[i++] = binary_path;
+ memcpy(conf_argv+i, service->argv + 1,
(service->argc) * sizeof(conf_argv[0]));
+ i += service->argc;
+
+ i_assert(i < argv_max_count);
execv_const(conf_argv[0], conf_argv);
}
diff -r 8d36d8f5fcef -r d63b48a452f1 src/lib-master/master-service-settings.h
--- a/src/lib-master/master-service-settings.h Wed Oct 06 19:34:41 2010 +0100
+++ b/src/lib-master/master-service-settings.h Wed Oct 06 19:35:06 2010 +0100
@@ -23,6 +23,7 @@
bool preserve_home;
bool never_exec;
bool use_sysexits;
+ bool parse_full_config;
const char *module;
const char *service;
More information about the dovecot-cvs
mailing list