version 1.167, 2010/09/22 22:58:51 |
version 1.168, 2010/11/26 05:52:49 |
|
|
|
|
/* Struct for addargs */ |
/* Struct for addargs */ |
arglist args; |
arglist args; |
|
arglist remote_remote_args; |
|
|
/* Bandwidth limit */ |
/* Bandwidth limit */ |
long long limit_kbps = 0; |
long long limit_kbps = 0; |
|
|
argv = newargv; |
argv = newargv; |
|
|
memset(&args, '\0', sizeof(args)); |
memset(&args, '\0', sizeof(args)); |
args.list = NULL; |
memset(&remote_remote_args, '\0', sizeof(remote_remote_args)); |
|
args.list = remote_remote_args.list = NULL; |
addargs(&args, "%s", ssh_program); |
addargs(&args, "%s", ssh_program); |
addargs(&args, "-x"); |
addargs(&args, "-x"); |
addargs(&args, "-oForwardAgent no"); |
addargs(&args, "-oForwardAgent=no"); |
addargs(&args, "-oPermitLocalCommand no"); |
addargs(&args, "-oPermitLocalCommand=no"); |
addargs(&args, "-oClearAllForwardings yes"); |
addargs(&args, "-oClearAllForwardings=yes"); |
|
|
fflag = tflag = 0; |
fflag = tflag = 0; |
while ((ch = getopt(argc, argv, "dfl:prtvBCc:i:P:q1246S:o:F:")) != -1) |
while ((ch = getopt(argc, argv, "dfl:prtvBCc:i:P:q1246S:o:F:")) != -1) |
|
|
case '6': |
case '6': |
case 'C': |
case 'C': |
addargs(&args, "-%c", ch); |
addargs(&args, "-%c", ch); |
|
addargs(&remote_remote_args, "-%c", ch); |
break; |
break; |
case 'o': |
case 'o': |
case 'c': |
case 'c': |
case 'i': |
case 'i': |
case 'F': |
case 'F': |
|
addargs(&remote_remote_args, "-%c", ch); |
|
addargs(&remote_remote_args, "%s", optarg); |
addargs(&args, "-%c", ch); |
addargs(&args, "-%c", ch); |
addargs(&args, "%s", optarg); |
addargs(&args, "%s", optarg); |
break; |
break; |
case 'P': |
case 'P': |
|
addargs(&remote_remote_args, "-p"); |
|
addargs(&remote_remote_args, "%s", optarg); |
addargs(&args, "-p"); |
addargs(&args, "-p"); |
addargs(&args, "%s", optarg); |
addargs(&args, "%s", optarg); |
break; |
break; |
case 'B': |
case 'B': |
addargs(&args, "-oBatchmode yes"); |
addargs(&remote_remote_args, "-oBatchmode=yes"); |
|
addargs(&args, "-oBatchmode=yes"); |
break; |
break; |
case 'l': |
case 'l': |
limit_kbps = strtonum(optarg, 1, 100 * 1024 * 1024, |
limit_kbps = strtonum(optarg, 1, 100 * 1024 * 1024, |
|
|
break; |
break; |
case 'v': |
case 'v': |
addargs(&args, "-v"); |
addargs(&args, "-v"); |
|
addargs(&remote_remote_args, "-v"); |
verbose_mode = 1; |
verbose_mode = 1; |
break; |
break; |
case 'q': |
case 'q': |
addargs(&args, "-q"); |
addargs(&args, "-q"); |
|
addargs(&remote_remote_args, "-q"); |
showprogress = 0; |
showprogress = 0; |
break; |
break; |
|
|
|
|
char *bp, *host, *src, *suser, *thost, *tuser, *arg; |
char *bp, *host, *src, *suser, *thost, *tuser, *arg; |
arglist alist; |
arglist alist; |
int i; |
int i; |
|
u_int j; |
|
|
memset(&alist, '\0', sizeof(alist)); |
memset(&alist, '\0', sizeof(alist)); |
alist.list = NULL; |
alist.list = NULL; |
|
|
if (src) { /* remote to remote */ |
if (src) { /* remote to remote */ |
freeargs(&alist); |
freeargs(&alist); |
addargs(&alist, "%s", ssh_program); |
addargs(&alist, "%s", ssh_program); |
if (verbose_mode) |
|
addargs(&alist, "-v"); |
|
addargs(&alist, "-x"); |
addargs(&alist, "-x"); |
addargs(&alist, "-oClearAllForwardings yes"); |
addargs(&alist, "-oClearAllForwardings=yes"); |
addargs(&alist, "-n"); |
addargs(&alist, "-n"); |
|
for (j = 0; j < remote_remote_args.num; j++) { |
|
addargs(&alist, "%s", |
|
remote_remote_args.list[j]); |
|
} |
*src++ = 0; |
*src++ = 0; |
if (*src == 0) |
if (*src == 0) |
src = "."; |
src = "."; |