summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2004-08-24 05:05:48 +0000
committerMatt Johnston <matt@ucc.asn.au>2004-08-24 05:05:48 +0000
commit8421d87668cc772393b014b5ddbe672ba674df86 (patch)
treee09ada38c0ec96c72a787303e718f3cdcadb6676
parentdec500470a02e511c26d0f6b300a7ab6acf28d86 (diff)
downloaddropbear-8421d87668cc772393b014b5ddbe672ba674df86.tar.gz
Fix for "-l" scp option
-rw-r--r--cli-runopts.c12
-rw-r--r--scp.c6
2 files changed, 10 insertions, 8 deletions
diff --git a/cli-runopts.c b/cli-runopts.c
index 05f637f..2aa3413 100644
--- a/cli-runopts.c
+++ b/cli-runopts.c
@@ -143,12 +143,6 @@ void cli_getopts(int argc, char ** argv) {
if (argv[i][0] == '-') {
/* A flag *waves* */
- if (strlen(argv[i]) > 2) {
- fprintf(stderr,
- "WARNING: Ignoring unknown argument '%s'\n", argv[i]);
- continue;
- }
-
switch (argv[i][1]) {
case 'p': /* remoteport */
next = &cli_opts.remoteport;
@@ -205,6 +199,12 @@ void cli_getopts(int argc, char ** argv) {
"WARNING: Ignoring unknown argument '%s'\n", argv[i]);
break;
} /* Switch */
+
+ /* Now we handle args where they might be "-luser" (no spaces)*/
+ if (next && strlen(argv[i]) > 2) {
+ *next = &argv[i][2];
+ next = NULL;
+ }
continue; /* next argument */
diff --git a/scp.c b/scp.c
index b6eec88..e356b8b 100644
--- a/scp.c
+++ b/scp.c
@@ -178,8 +178,10 @@ do_cmd(char *host, char *remuser, char *cmd, int *fdin, int *fdout, int argc)
close(pout[1]);
args.list[0] = ssh_program;
- if (remuser != NULL)
- addargs(&args, "-l%s", remuser);
+ if (remuser != NULL) {
+ addargs(&args, "-l");
+ addargs(&args, "%s", remuser);
+ }
addargs(&args, "%s", host);
addargs(&args, "%s", cmd);