dovecot-2.0: dsync: Fixed giving dsync command as a path to a bi...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Jul 10 20:11:58 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/1f9080e9a530
changeset: 11774:1f9080e9a530
user: Timo Sirainen <tss at iki.fi>
date: Sat Jul 10 17:59:11 2010 +0100
description:
dsync: Fixed giving dsync command as a path to a binary without parameters.
diffstat:
src/dsync/dsync.c | 33 ++++++++++++++++++++++-----------
1 files changed, 22 insertions(+), 11 deletions(-)
diffs (65 lines):
diff -r f93507788bc3 -r 1f9080e9a530 src/dsync/dsync.c
--- a/src/dsync/dsync.c Sat Jul 10 17:38:48 2010 +0100
+++ b/src/dsync/dsync.c Sat Jul 10 17:59:11 2010 +0100
@@ -57,24 +57,33 @@
}
}
+static void
+mirror_get_remote_cmd_line(char **argv, const char *const **cmd_args_r)
+{
+ ARRAY_TYPE(const_string) cmd_args;
+ unsigned int i;
+ const char *p;
+
+ t_array_init(&cmd_args, 16);
+ for (i = 0; argv[i] != NULL; i++) {
+ p = argv[i];
+ array_append(&cmd_args, &p, 1);
+ }
+
+ p = "server"; array_append(&cmd_args, &p, 1);
+ (void)array_append_space(&cmd_args);
+ *cmd_args_r = array_idx(&cmd_args, 0);
+}
+
static bool mirror_get_remote_cmd(char **argv, const char *const **cmd_args_r)
{
ARRAY_TYPE(const_string) cmd_args;
- unsigned int i;
const char *p, *user, *host;
- t_array_init(&cmd_args, 8);
if (argv[1] != NULL) {
/* more than one parameter, so it contains a full command
(e.g. ssh host dsync) */
- for (i = 0; argv[i] != NULL; i++) {
- p = argv[i];
- array_append(&cmd_args, &p, 1);
- }
-
- p = "server"; array_append(&cmd_args, &p, 1);
- (void)array_append_space(&cmd_args);
- *cmd_args_r = array_idx(&cmd_args, 0);
+ mirror_get_remote_cmd_line(argv, cmd_args_r);
return TRUE;
}
@@ -93,7 +102,8 @@
backwards compatibility.
b) script/path */
argv = p_strsplit(pool_datastack_create(), argv[0], " ");
- return mirror_get_remote_cmd(argv, cmd_args_r);
+ mirror_get_remote_cmd_line(argv, cmd_args_r);
+ return TRUE;
}
/* [user@]host */
@@ -107,6 +117,7 @@
/* we'll assume virtual users, so in user at host it really means not to
give ssh a username, but to give dsync -u user parameter. */
+ t_array_init(&cmd_args, 8);
array_append(&cmd_args, &ssh_cmd, 1);
array_append(&cmd_args, &host, 1);
p = "dsync"; array_append(&cmd_args, &p, 1);
More information about the dovecot-cvs
mailing list