dovecot-2.1: doveadm: Added exec command to easily execute comma...

dovecot at dovecot.org dovecot at dovecot.org
Thu Sep 6 16:50:12 EEST 2012


details:   http://hg.dovecot.org/dovecot-2.1/rev/cb3f49b649bf
changeset: 14696:cb3f49b649bf
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Sep 06 16:50:00 2012 +0300
description:
doveadm: Added exec command to easily execute commands from libexec_dir.
For example: doveadm exec imap -u user at domain

diffstat:

 src/doveadm/Makefile.am        |   1 +
 src/doveadm/doveadm-settings.c |   2 ++
 src/doveadm/doveadm-settings.h |   1 +
 src/doveadm/doveadm.c          |  16 ++++++++++++++++
 4 files changed, 20 insertions(+), 0 deletions(-)

diffs (74 lines):

diff -r 0ee2f712b489 -r cb3f49b649bf src/doveadm/Makefile.am
--- a/src/doveadm/Makefile.am	Tue Sep 04 17:18:08 2012 +0300
+++ b/src/doveadm/Makefile.am	Thu Sep 06 16:50:00 2012 +0300
@@ -22,6 +22,7 @@
 	-DDOVEADM_MODULEDIR=\""$(doveadm_moduledir)"\" \
 	-DPKG_RUNDIR=\""$(rundir)"\" \
 	-DPKG_STATEDIR=\""$(statedir)"\" \
+	-DPKG_LIBEXECDIR=\""$(pkglibexecdir)"\" \
 	-DBINDIR=\""$(bindir)"\" \
 	-DMANDIR=\""$(mandir)"\"
 
diff -r 0ee2f712b489 -r cb3f49b649bf src/doveadm/doveadm-settings.c
--- a/src/doveadm/doveadm-settings.c	Tue Sep 04 17:18:08 2012 +0300
+++ b/src/doveadm/doveadm-settings.c	Thu Sep 06 16:50:00 2012 +0300
@@ -53,6 +53,7 @@
 
 static const struct setting_define doveadm_setting_defines[] = {
 	DEF(SET_STR, base_dir),
+	DEF(SET_STR, libexec_dir),
 	DEF(SET_STR, mail_plugins),
 	DEF(SET_STR, mail_plugin_dir),
 	DEF(SET_STR, doveadm_socket_path),
@@ -70,6 +71,7 @@
 
 const struct doveadm_settings doveadm_default_settings = {
 	.base_dir = PKG_RUNDIR,
+	.libexec_dir = PKG_LIBEXECDIR,
 	.mail_plugins = "",
 	.mail_plugin_dir = MODULEDIR,
 	.doveadm_socket_path = "doveadm-server",
diff -r 0ee2f712b489 -r cb3f49b649bf src/doveadm/doveadm-settings.h
--- a/src/doveadm/doveadm-settings.h	Tue Sep 04 17:18:08 2012 +0300
+++ b/src/doveadm/doveadm-settings.h	Thu Sep 06 16:50:00 2012 +0300
@@ -3,6 +3,7 @@
 
 struct doveadm_settings {
 	const char *base_dir;
+	const char *libexec_dir;
 	const char *mail_plugins;
 	const char *mail_plugin_dir;
 	const char *doveadm_socket_path;
diff -r 0ee2f712b489 -r cb3f49b649bf src/doveadm/doveadm.c
--- a/src/doveadm/doveadm.c	Tue Sep 04 17:18:08 2012 +0300
+++ b/src/doveadm/doveadm.c	Thu Sep 06 16:50:00 2012 +0300
@@ -174,6 +174,21 @@
 	cmd_config, "config", "[doveconf parameters]"
 };
 
+static void cmd_exec(int argc ATTR_UNUSED, char *argv[])
+{
+	const char *path, *binary = argv[1];
+
+	path = t_strdup_printf("%s/%s", doveadm_settings->libexec_dir, binary);
+	argv++;
+	argv[0] = t_strdup_noconst(path);
+	(void)execv(argv[0], argv);
+	i_fatal("execv(%s) failed: %m", argv[0]);
+}
+
+static struct doveadm_cmd doveadm_cmd_exec = {
+	cmd_exec, "exec", "<binary> [binary parameters]"
+};
+
 static bool
 doveadm_try_run_multi_word(const struct doveadm_cmd *cmd,
 			   const char *cmdname, int argc, char *argv[])
@@ -269,6 +284,7 @@
 static struct doveadm_cmd *doveadm_commands[] = {
 	&doveadm_cmd_help,
 	&doveadm_cmd_config,
+	&doveadm_cmd_exec,
 	&doveadm_cmd_stop,
 	&doveadm_cmd_reload,
 	&doveadm_cmd_dump,


More information about the dovecot-cvs mailing list