*/
#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;
#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);
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;
}
int
-foregroundproc()
+foregroundproc(void)
{
static pid_t pgrp = -1;
int ctty_pgrp;
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) {
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);