mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-18 00:10:04 +00:00
192 lines
6.3 KiB
Plaintext
192 lines
6.3 KiB
Plaintext
|
*** scp.c.orig Wed May 12 13:19:28 1999
|
||
|
--- scp.c Mon Jan 10 22:56:13 2000
|
||
|
***************
|
||
|
*** 180,185 ****
|
||
|
--- 180,193 ----
|
||
|
#define STDERR_FILENO 2
|
||
|
#endif
|
||
|
|
||
|
+ /* This is set to non-zero if IPv4 is desired. */
|
||
|
+ int IPv4 = 0;
|
||
|
+
|
||
|
+ #ifdef ENABLE_IPV6
|
||
|
+ /* This is set to non-zero if IPv6 is desired. */
|
||
|
+ int IPv6 = 0;
|
||
|
+ #endif
|
||
|
+
|
||
|
/* This is set to non-zero to enable verbose mode. */
|
||
|
int verbose = 0;
|
||
|
|
||
|
***************
|
||
|
*** 295,302 ****
|
||
|
--- 303,319 ----
|
||
|
}
|
||
|
args[i++] = "-x";
|
||
|
args[i++] = "-a";
|
||
|
+ #ifdef ENABLE_ANOTHER_PORT_TRY
|
||
|
+ args[i++] = "-A";
|
||
|
+ #endif /* ENABLE_ANOTHER_PORT_TRY */
|
||
|
args[i++] = "-oFallBackToRsh no";
|
||
|
args[i++] = "-oClearAllForwardings yes";
|
||
|
+ if (IPv4)
|
||
|
+ args[i++] = "-4";
|
||
|
+ #ifdef ENABLE_IPV6
|
||
|
+ if (IPv6)
|
||
|
+ args[i++] = "-6";
|
||
|
+ #endif
|
||
|
if (verbose)
|
||
|
args[i++] = "-v";
|
||
|
if (compress)
|
||
|
***************
|
||
|
*** 441,448 ****
|
||
|
statistics = 0;
|
||
|
|
||
|
fflag = tflag = 0;
|
||
|
! while ((ch = getopt(argc, argv, "aAqQdfprtvBCL1c:i:P:o:S:")) != EOF)
|
||
|
switch(ch) { /* User-visible flags. */
|
||
|
case 'S':
|
||
|
ssh_program = optarg;
|
||
|
break;
|
||
|
--- 458,477 ----
|
||
|
statistics = 0;
|
||
|
|
||
|
fflag = tflag = 0;
|
||
|
! while ((ch = getopt(argc, argv, "aAqQdfprtvBCL1c:i:P:o:S:4"
|
||
|
! #ifdef ENABLE_IPV6
|
||
|
! "6"
|
||
|
! #endif
|
||
|
! )) != EOF)
|
||
|
switch(ch) { /* User-visible flags. */
|
||
|
+ case '4':
|
||
|
+ IPv4 = 1;
|
||
|
+ break;
|
||
|
+ #ifdef ENABLE_IPV6
|
||
|
+ case '6':
|
||
|
+ IPv6 = 1;
|
||
|
+ break;
|
||
|
+ #endif
|
||
|
case 'S':
|
||
|
ssh_program = optarg;
|
||
|
break;
|
||
|
***************
|
||
|
*** 589,594 ****
|
||
|
--- 618,634 ----
|
||
|
exit(errs != 0);
|
||
|
}
|
||
|
|
||
|
+ char *
|
||
|
+ cleanhostname(host)
|
||
|
+ char *host;
|
||
|
+ {
|
||
|
+ if (*host == '[' && host[strlen(host) - 1] == ']') {
|
||
|
+ host[strlen(host) - 1] = '\0';
|
||
|
+ return (host + 1);
|
||
|
+ } else
|
||
|
+ return host;
|
||
|
+ }
|
||
|
+
|
||
|
void
|
||
|
toremote(targ, argc, argv)
|
||
|
char *targ, *argv[];
|
||
|
***************
|
||
|
*** 644,649 ****
|
||
|
--- 684,690 ----
|
||
|
bp = xmalloc(len);
|
||
|
if (host) {
|
||
|
*host++ = 0;
|
||
|
+ host = cleanhostname(host);
|
||
|
suser = argv[i];
|
||
|
if (*suser == '\0')
|
||
|
suser = pwd->pw_name;
|
||
|
***************
|
||
|
*** 655,667 ****
|
||
|
suser, host, cmd, src,
|
||
|
tuser ? tuser : "", tuser ? "@" : "",
|
||
|
thost, targ);
|
||
|
! } else
|
||
|
(void)snprintf(bp, len,
|
||
|
"exec %s%s %s -x -o'FallBackToRsh no' -o'ClearAllForwardings yes' -n %s %s %s '%s%s%s:%s'",
|
||
|
ssh_program, verbose ? " -v" : "", options,
|
||
|
! argv[i], cmd, src,
|
||
|
tuser ? tuser : "", tuser ? "@" : "",
|
||
|
thost, targ);
|
||
|
if (verbose)
|
||
|
fprintf(stderr, "Executing: %s\n", bp);
|
||
|
if (system(bp)) errs++;
|
||
|
--- 696,710 ----
|
||
|
suser, host, cmd, src,
|
||
|
tuser ? tuser : "", tuser ? "@" : "",
|
||
|
thost, targ);
|
||
|
! } else {
|
||
|
! host = cleanhostname(argv[i]);
|
||
|
(void)snprintf(bp, len,
|
||
|
"exec %s%s %s -x -o'FallBackToRsh no' -o'ClearAllForwardings yes' -n %s %s %s '%s%s%s:%s'",
|
||
|
ssh_program, verbose ? " -v" : "", options,
|
||
|
! host, cmd, src,
|
||
|
tuser ? tuser : "", tuser ? "@" : "",
|
||
|
thost, targ);
|
||
|
+ }
|
||
|
if (verbose)
|
||
|
fprintf(stderr, "Executing: %s\n", bp);
|
||
|
if (system(bp)) errs++;
|
||
|
***************
|
||
|
*** 671,677 ****
|
||
|
len = strlen(targ) + CMDNEEDS + 20;
|
||
|
bp = xmalloc(len);
|
||
|
(void)snprintf(bp, len, "%s -t %s", cmd, targ);
|
||
|
! host = thost;
|
||
|
if (do_cmd(host, tuser,
|
||
|
bp, &remin, &remout) < 0)
|
||
|
exit(1);
|
||
|
--- 714,720 ----
|
||
|
len = strlen(targ) + CMDNEEDS + 20;
|
||
|
bp = xmalloc(len);
|
||
|
(void)snprintf(bp, len, "%s -t %s", cmd, targ);
|
||
|
! host = cleanhostname(thost);
|
||
|
if (do_cmd(host, tuser,
|
||
|
bp, &remin, &remout) < 0)
|
||
|
exit(1);
|
||
|
***************
|
||
|
*** 721,726 ****
|
||
|
--- 764,770 ----
|
||
|
else if (!okname(suser))
|
||
|
continue;
|
||
|
}
|
||
|
+ host = cleanhostname(host);
|
||
|
len = strlen(src) + CMDNEEDS + 20;
|
||
|
bp = xmalloc(len);
|
||
|
(void)snprintf(bp, len, "%s -f %s", cmd, src);
|
||
|
***************
|
||
|
*** 1365,1375 ****
|
||
|
colon(cp)
|
||
|
char *cp;
|
||
|
{
|
||
|
if (*cp == ':') /* Leading colon is part of file name. */
|
||
|
return (0);
|
||
|
|
||
|
for (; *cp; ++cp) {
|
||
|
! if (*cp == ':')
|
||
|
return (cp);
|
||
|
if (*cp == '/')
|
||
|
return (0);
|
||
|
--- 1409,1427 ----
|
||
|
colon(cp)
|
||
|
char *cp;
|
||
|
{
|
||
|
+ int flag = 0;
|
||
|
+
|
||
|
if (*cp == ':') /* Leading colon is part of file name. */
|
||
|
return (0);
|
||
|
+ if (*cp == '[')
|
||
|
+ flag = 1;
|
||
|
|
||
|
for (; *cp; ++cp) {
|
||
|
! if (*cp == '@' && *(cp+1) == '[')
|
||
|
! flag = 1;
|
||
|
! if (*cp == ']' && *(cp+1) == ':' && flag)
|
||
|
! return (cp+1);
|
||
|
! if (*cp == ':' && !flag)
|
||
|
return (cp);
|
||
|
if (*cp == '/')
|
||
|
return (0);
|