summaryrefslogtreecommitdiff
path: root/scp.c
diff options
context:
space:
mode:
Diffstat (limited to 'scp.c')
-rw-r--r--scp.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/scp.c b/scp.c
index 5a3ec4470..f045d4609 100644
--- a/scp.c
+++ b/scp.c
@@ -45,7 +45,7 @@
45 */ 45 */
46 46
47#include "includes.h" 47#include "includes.h"
48RCSID("$Id: scp.c,v 1.12 1999/12/07 04:38:32 damien Exp $"); 48RCSID("$Id: scp.c,v 1.13 1999/12/15 00:04:25 damien Exp $");
49 49
50#include "ssh.h" 50#include "ssh.h"
51#include "xmalloc.h" 51#include "xmalloc.h"
@@ -548,7 +548,7 @@ next: (void) close(fd);
548 if (haderr) 548 if (haderr)
549 (void) write(remout, bp->buf, amt); 549 (void) write(remout, bp->buf, amt);
550 else { 550 else {
551 result = write(remout, bp->buf, amt); 551 result = atomicio(write, remout, bp->buf, amt);
552 if (result != amt) 552 if (result != amt)
553 haderr = result >= 0 ? EIO : errno; 553 haderr = result >= 0 ? EIO : errno;
554 statbytes += result; 554 statbytes += result;
@@ -974,7 +974,7 @@ run_err(const char *fmt,...)
974 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 974 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
975 * SUCH DAMAGE. 975 * SUCH DAMAGE.
976 * 976 *
977 * $Id: scp.c,v 1.12 1999/12/07 04:38:32 damien Exp $ 977 * $Id: scp.c,v 1.13 1999/12/15 00:04:25 damien Exp $
978 */ 978 */
979 979
980char * 980char *
@@ -1145,8 +1145,8 @@ progressmeter(int flag)
1145 i++; 1145 i++;
1146 abbrevsize >>= 10; 1146 abbrevsize >>= 10;
1147 } 1147 }
1148 snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), " %5qd %c%c ", 1148 snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), " %5d %c%c ",
1149 (quad_t) abbrevsize, prefixes[i], prefixes[i] == ' ' ? ' ' : 1149 (int) abbrevsize, prefixes[i], prefixes[i] == ' ' ? ' ' :
1150 'B'); 1150 'B');
1151 1151
1152 timersub(&now, &lastupdate, &wait); 1152 timersub(&now, &lastupdate, &wait);
@@ -1184,7 +1184,11 @@ progressmeter(int flag)
1184 atomicio(write, fileno(stdout), buf, strlen(buf)); 1184 atomicio(write, fileno(stdout), buf, strlen(buf));
1185 1185
1186 if (flag == -1) { 1186 if (flag == -1) {
1187 signal(SIGALRM, (void *) updateprogressmeter); 1187 struct sigaction sa;
1188 sa.sa_handler = updateprogressmeter;
1189 sigemptyset(&sa.sa_mask);
1190 sa.sa_flags = SA_RESTART;
1191 sigaction(SIGALRM, &sa, NULL);
1188 alarmtimer(1); 1192 alarmtimer(1);
1189 } else if (flag == 1) { 1193 } else if (flag == 1) {
1190 alarmtimer(0); 1194 alarmtimer(0);