Mercurial > dovecot > core-2.2
changeset 9236:955e68007ada HEAD
dovecot: Forward dovecot -a, -n to doveconf.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 06 May 2009 14:20:14 -0400 |
parents | 2e2b957f1cca |
children | 30d771700232 |
files | src/master/main.c |
diffstat | 1 files changed, 23 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/master/main.c Tue May 05 21:28:34 2009 -0400 +++ b/src/master/main.c Wed May 06 14:20:14 2009 -0400 @@ -24,6 +24,8 @@ #include <pwd.h> #include <grp.h> +#define DOVECOT_CONFIG_BIN_PATH BINDIR"/doveconf" + #define FATAL_FILENAME "master-fatal.lastlog" #define MASTER_PID_FILE_NAME "master.pid" @@ -525,7 +527,7 @@ }; 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 @@ 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 @@ } } + 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);