]> andersk Git - openssh.git/blobdiff - scp.c
- OpenBSD CVS Sync:
[openssh.git] / scp.c
diff --git a/scp.c b/scp.c
index 14d8a8af85c4bb22ef0d988b70684f57e2f80c1d..541ba872644c051e8811cc03a4eba00e3104cbf1 100644 (file)
--- a/scp.c
+++ b/scp.c
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: scp.c,v 1.55 2001/02/08 14:38:54 deraadt Exp $");
+RCSID("$OpenBSD: scp.c,v 1.59 2001/02/19 10:36:25 deraadt Exp $");
 
 #include "xmalloc.h"
 #include "atomicio.h"
 #include "pathnames.h"
 #include "log.h"
+#include "misc.h"
 
 #ifdef HAVE___PROGNAME
 extern char *__progname;
@@ -219,11 +220,13 @@ int pflag, iamremote, iamrecursive, targetshouldbedirectory;
 #define        CMDNEEDS        64
 char cmd[CMDNEEDS];            /* must hold "rcp -r -p -d\0" */
 
+int main(int, char *[]);
 int response(void);
 void rsource(char *, struct stat *);
 void sink(int, char *[]);
 void source(int, char *[]);
 void tolocal(int, char *[]);
+char *cleanhostname(char *);
 void toremote(char *, int, char *[]);
 void usage(void);
 
@@ -797,16 +800,18 @@ sink(argc, argv)
                                if (mkdir(np, mode | S_IRWXU) < 0)
                                        goto bad;
                        }
-                       vect[0] = np;
+                       vect[0] = xstrdup(np);
                        sink(1, vect);
                        if (setimes) {
                                setimes = 0;
-                               if (utimes(np, tv) < 0)
+                               if (utimes(vect[0], tv) < 0)
                                        run_err("%s: set times: %s",
-                                               np, strerror(errno));
+                                           vect[0], strerror(errno));
                        }
                        if (mod_flag)
-                               (void) chmod(np, mode);
+                               (void) chmod(vect[0], mode);
+                       if (vect[0])
+                               xfree(vect[0]);
                        continue;
                }
                omode = mode;
@@ -1110,7 +1115,7 @@ updateprogressmeter(int ignore)
 }
 
 int
-foregroundproc()
+foregroundproc(void)
 {
        static pid_t pgrp = -1;
        int ctty_pgrp;
@@ -1172,7 +1177,8 @@ progressmeter(int flag)
                abbrevsize >>= 10;
        }
        snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), " %5lu %c%c ",
-           (unsigned long) abbrevsize, prefixes[i], prefixes[i] == ' ' ? ' ' : 'B');
+           (unsigned long) abbrevsize, prefixes[i],
+           prefixes[i] == ' ' ? ' ' : 'B');
 
        timersub(&now, &lastupdate, &wait);
        if (cursize > lastsize) {
@@ -1216,13 +1222,7 @@ progressmeter(int flag)
        atomicio(write, fileno(stdout), buf, strlen(buf));
 
        if (flag == -1) {
-               struct sigaction sa;
-               sa.sa_handler = updateprogressmeter;
-               sigemptyset((sigset_t *)&sa.sa_mask);
-#ifdef SA_RESTART
-               sa.sa_flags = SA_RESTART;
-#endif
-               sigaction(SIGALRM, &sa, NULL);
+               mysignal(SIGALRM, updateprogressmeter);
                alarmtimer(1);
        } else if (flag == 1) {
                alarmtimer(0);
This page took 0.03628 seconds and 4 git commands to generate.