dovecot-2.2: doveadm: Added exec command to easily execute comma...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Sep 26 18:01:29 EEST 2012
details: http://hg.dovecot.org/dovecot-2.2/rev/cb3f49b649bf
changeset: 15124: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