[BACK]Return to scp.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / crypto / external / bsd / openssh / dist

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/crypto/external/bsd/openssh/dist/scp.c between version 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2009/06/07 22:19:17 version 1.1.1.2, 2010/11/21 17:05:54
Line 1 
Line 1 
 /*      $NetBSD$        */  /*      $NetBSD$        */
 /* $OpenBSD: scp.c,v 1.164 2008/10/10 04:55:16 stevesk Exp $ */  /* $OpenBSD: scp.c,v 1.166 2010/07/01 13:06:59 millert Exp $ */
 /*  /*
  * scp - secure remote copy.  This is basically patched BSD rcp which   * scp - secure remote copy.  This is basically patched BSD rcp which
  * uses ssh to do the data transfer (instead of using rcmd).   * uses ssh to do the data transfer (instead of using rcmd).
Line 141  killchild(int signo)
Line 141  killchild(int signo)
         exit(1);          exit(1);
 }  }
   
   static void
   suspchild(int signo)
   {
           int status;
   
           if (do_cmd_pid > 1) {
                   kill(do_cmd_pid, signo);
                   while (waitpid(do_cmd_pid, &status, WUNTRACED) == -1 &&
                       errno == EINTR)
                           ;
                   kill(getpid(), SIGSTOP);
           }
   }
   
 static int  static int
 do_local_cmd(arglist *a)  do_local_cmd(arglist *a)
 {  {
Line 217  do_cmd(char *host, char *remuser, char *
Line 231  do_cmd(char *host, char *remuser, char *
         close(reserved[0]);          close(reserved[0]);
         close(reserved[1]);          close(reserved[1]);
   
           signal(SIGTSTP, suspchild);
           signal(SIGTTIN, suspchild);
           signal(SIGTTOU, suspchild);
   
         /* Fork a child to execute the command on the remote host using ssh. */          /* Fork a child to execute the command on the remote host using ssh. */
         do_cmd_pid = fork();          do_cmd_pid = fork();
         if (do_cmd_pid == 0) {          if (do_cmd_pid == 0) {
Line 229  do_cmd(char *host, char *remuser, char *
Line 247  do_cmd(char *host, char *remuser, char *
                 close(pout[1]);                  close(pout[1]);
   
                 replacearg(&args, 0, "%s", ssh_program);                  replacearg(&args, 0, "%s", ssh_program);
                 if (remuser != NULL)                  if (remuser != NULL) {
                         addargs(&args, "-l%s", remuser);                          addargs(&args, "-l");
                           addargs(&args, "%s", remuser);
                   }
                   addargs(&args, "--");
                 addargs(&args, "%s", host);                  addargs(&args, "%s", host);
                 addargs(&args, "%s", cmd);                  addargs(&args, "%s", cmd);
   
Line 319  main(int argc, char **argv)
Line 340  main(int argc, char **argv)
                 case 'c':                  case 'c':
                 case 'i':                  case 'i':
                 case 'F':                  case 'F':
                         addargs(&args, "-%c%s", ch, optarg);                          addargs(&args, "-%c", ch);
                           addargs(&args, "%s", optarg);
                         break;                          break;
                 case 'P':                  case 'P':
                         addargs(&args, "-p%s", optarg);                          addargs(&args, "-p");
                           addargs(&args, "%s", optarg);
                         break;                          break;
                 case 'B':                  case 'B':
                         addargs(&args, "-oBatchmode yes");                          addargs(&args, "-oBatchmode yes");
Line 527  toremote(char *targ, int argc, char **ar
Line 550  toremote(char *targ, int argc, char **ar
                         } else {                          } else {
                                 host = cleanhostname(argv[i]);                                  host = cleanhostname(argv[i]);
                         }                          }
                           addargs(&alist, "--");
                         addargs(&alist, "%s", host);                          addargs(&alist, "%s", host);
                         addargs(&alist, "%s", cmd);                          addargs(&alist, "%s", cmd);
                         addargs(&alist, "%s", src);                          addargs(&alist, "%s", src);
Line 537  toremote(char *targ, int argc, char **ar
Line 561  toremote(char *targ, int argc, char **ar
                                 errs = 1;                                  errs = 1;
                 } else {        /* local to remote */                  } else {        /* local to remote */
                         if (remin == -1) {                          if (remin == -1) {
                                 xasprintf(&bp, "%s -t %s", cmd, targ);                                  xasprintf(&bp, "%s -t -- %s", cmd, targ);
                                 host = cleanhostname(thost);                                  host = cleanhostname(thost);
                                 if (do_cmd(host, tuser, bp, &remin,                                  if (do_cmd(host, tuser, bp, &remin,
                                     &remout) < 0)                                      &remout) < 0)
Line 570  tolocal(int argc, char **argv)
Line 594  tolocal(int argc, char **argv)
                                 addargs(&alist, "-r");                                  addargs(&alist, "-r");
                         if (pflag)                          if (pflag)
                                 addargs(&alist, "-p");                                  addargs(&alist, "-p");
                           addargs(&alist, "--");
                         addargs(&alist, "%s", argv[i]);                          addargs(&alist, "%s", argv[i]);
                         addargs(&alist, "%s", argv[argc-1]);                          addargs(&alist, "%s", argv[argc-1]);
                         if (do_local_cmd(&alist))                          if (do_local_cmd(&alist))
Line 589  tolocal(int argc, char **argv)
Line 614  tolocal(int argc, char **argv)
                                 suser = pwd->pw_name;                                  suser = pwd->pw_name;
                 }                  }
                 host = cleanhostname(host);                  host = cleanhostname(host);
                 xasprintf(&bp, "%s -f %s", cmd, src);                  xasprintf(&bp, "%s -f -- %s", cmd, src);
                 if (do_cmd(host, suser, bp, &remin, &remout) < 0) {                  if (do_cmd(host, suser, bp, &remin, &remout) < 0) {
                         (void) xfree(bp);                          (void) xfree(bp);
                         ++errs;                          ++errs;

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2

CVSweb <webmaster@jp.NetBSD.org>