diff options
Diffstat (limited to 'scp.c')
-rw-r--r-- | scp.c | 22 |
1 files changed, 7 insertions, 15 deletions
@@ -75,7 +75,7 @@ | |||
75 | */ | 75 | */ |
76 | 76 | ||
77 | #include "includes.h" | 77 | #include "includes.h" |
78 | RCSID("$OpenBSD: scp.c,v 1.78 2001/07/27 17:26:16 deraadt Exp $"); | 78 | RCSID("$OpenBSD: scp.c,v 1.79 2001/08/06 19:47:05 stevesk Exp $"); |
79 | 79 | ||
80 | #include "xmalloc.h" | 80 | #include "xmalloc.h" |
81 | #include "atomicio.h" | 81 | #include "atomicio.h" |
@@ -91,6 +91,8 @@ char *__progname; | |||
91 | 91 | ||
92 | /* For progressmeter() -- number of seconds before xfer considered "stalled" */ | 92 | /* For progressmeter() -- number of seconds before xfer considered "stalled" */ |
93 | #define STALLTIME 5 | 93 | #define STALLTIME 5 |
94 | /* alarm() interval for updating progress meter */ | ||
95 | #define PROGRESSTIME 1 | ||
94 | 96 | ||
95 | /* Progress meter bar */ | 97 | /* Progress meter bar */ |
96 | #define BAR \ | 98 | #define BAR \ |
@@ -1064,24 +1066,14 @@ lostconn(signo) | |||
1064 | exit(1); | 1066 | exit(1); |
1065 | } | 1067 | } |
1066 | 1068 | ||
1067 | |||
1068 | static void | ||
1069 | alarmtimer(int wait) | ||
1070 | { | ||
1071 | struct itimerval itv; | ||
1072 | |||
1073 | itv.it_value.tv_sec = wait; | ||
1074 | itv.it_value.tv_usec = 0; | ||
1075 | itv.it_interval = itv.it_value; | ||
1076 | setitimer(ITIMER_REAL, &itv, NULL); | ||
1077 | } | ||
1078 | |||
1079 | static void | 1069 | static void |
1080 | updateprogressmeter(int ignore) | 1070 | updateprogressmeter(int ignore) |
1081 | { | 1071 | { |
1082 | int save_errno = errno; | 1072 | int save_errno = errno; |
1083 | 1073 | ||
1084 | progressmeter(0); | 1074 | progressmeter(0); |
1075 | signal(SIGALRM, updateprogressmeter); | ||
1076 | alarm(PROGRESSTIME); | ||
1085 | errno = save_errno; | 1077 | errno = save_errno; |
1086 | } | 1078 | } |
1087 | 1079 | ||
@@ -1194,9 +1186,9 @@ progressmeter(int flag) | |||
1194 | 1186 | ||
1195 | if (flag == -1) { | 1187 | if (flag == -1) { |
1196 | mysignal(SIGALRM, updateprogressmeter); | 1188 | mysignal(SIGALRM, updateprogressmeter); |
1197 | alarmtimer(1); | 1189 | alarm(PROGRESSTIME); |
1198 | } else if (flag == 1) { | 1190 | } else if (flag == 1) { |
1199 | alarmtimer(0); | 1191 | alarm(0); |
1200 | atomicio(write, fileno(stdout), "\n", 1); | 1192 | atomicio(write, fileno(stdout), "\n", 1); |
1201 | statbytes = 0; | 1193 | statbytes = 0; |
1202 | } | 1194 | } |