From: Timo Sirainen Date: Wed, 6 May 2009 18:20:14 +0000 (-0400) Subject: dovecot: Forward dovecot -a, -n to doveconf. X-Git-Tag: 2.0.alpha1~816 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=826b9583cef5387ee2b683316728fa1055858f5f;p=thirdparty%2Fdovecot%2Fcore.git dovecot: Forward dovecot -a, -n to doveconf. --HG-- branch : HEAD --- diff --git a/src/master/main.c b/src/master/main.c index ed939318d0..9b8804550a 100644 --- a/src/master/main.c +++ b/src/master/main.c @@ -24,6 +24,8 @@ #include #include +#define DOVECOT_CONFIG_BIN_PATH BINDIR"/doveconf" + #define FATAL_FILENAME "master-fatal.lastlog" #define MASTER_PID_FILE_NAME "master.pid" @@ -525,7 +527,7 @@ int main(int argc, char *argv[]) }; struct master_settings *set; unsigned int child_process_env_idx = 0; - const char *getopt_str, *error, *env_tz; + const char *getopt_str, *error, *env_tz, *doveconf_arg = NULL; failure_callback_t *error_callback; void **sets; bool foreground = FALSE, ask_key_pass = FALSE, log_error = FALSE; @@ -542,12 +544,18 @@ int main(int argc, char *argv[]) master_uid = geteuid(); master_gid = getegid(); - getopt_str = t_strconcat("Fp", master_service_getopt_string(), NULL); + getopt_str = t_strconcat("Fanp", master_service_getopt_string(), NULL); while ((c = getopt(argc, argv, getopt_str)) > 0) { switch (c) { case 'F': foreground = TRUE; break; + case 'a': + doveconf_arg = "-a"; + break; + case 'n': + doveconf_arg = "-n"; + break; case 'p': /* Ask SSL private key password */ ask_key_pass = TRUE; @@ -562,6 +570,19 @@ int main(int argc, char *argv[]) } } + if (doveconf_arg != NULL) { + const char **args; + + args = t_new(const char *, 5); + args[0] = DOVECOT_CONFIG_BIN_PATH; + args[1] = doveconf_arg; + args[2] = "-c"; + args[3] = master_service_get_config_path(master_service); + args[4] = NULL; + execv(args[0], (char **)args); + i_fatal("execv(%s) failed: %m", args[0]); + } + if (optind < argc) { if (strcmp(argv[optind], "--version") == 0) { printf("%s\n", VERSION);