- Work around rsync and scp parsing and modifying the user@host argument,

which break's dbclient's multihop syntax

--HG--
extra : convert_revision : cf704125a4785278aeb79f62bf025638e1b28e4c
This commit is contained in:
Matt Johnston 2008-09-22 15:47:35 +00:00
parent 643626d546
commit 299d26dab7

View File

@ -412,7 +412,20 @@ static void parse_multihop_hostname(const char* orighostarg, const char* argv0)
char *last_hop = NULL;; char *last_hop = NULL;;
char *remainder = NULL; char *remainder = NULL;
/* both scp and rsync parse a user@host argument
* and turn it into "-l user host". This breaks
* for our multihop syntax, so we suture it back together.
* This will break usernames that have both '@' and ',' in them,
* though that should be fairly uncommon. */
if (cli_opts.username
&& strchr(cli_opts.username, ',')
&& strchr(cli_opts.username, '@')) {
unsigned int len = strlen(orighostarg) + strlen(cli_opts.username) + 2;
userhostarg = m_malloc(len);
snprintf(userhostarg, len, "%s@%s", cli_opts.username, orighostarg);
} else {
userhostarg = m_strdup(orighostarg); userhostarg = m_strdup(orighostarg);
}
last_hop = strrchr(userhostarg, ','); last_hop = strrchr(userhostarg, ',');
if (last_hop) { if (last_hop) {