111 lines
3.4 KiB
Diff
111 lines
3.4 KiB
Diff
|
commit bdc6c63c80b55bcbaa66b5fde31c1cb1d09a41eb
|
||
|
Author: dtucker@openbsd.org <dtucker@openbsd.org>
|
||
|
Date: Thu Jan 24 16:52:17 2019 +0000
|
||
|
|
||
|
upstream: Have progressmeter force an update at the beginning and
|
||
|
|
||
|
end of each transfer. Fixes the problem recently introduces where very quick
|
||
|
transfers do not display the progressmeter at all. Spotted by naddy@
|
||
|
|
||
|
OpenBSD-Commit-ID: 68dc46c259e8fdd4f5db3ec2a130f8e4590a7a9a
|
||
|
|
||
|
Index: openssh-7.9p1/progressmeter.c
|
||
|
===================================================================
|
||
|
--- openssh-7.9p1.orig/progressmeter.c
|
||
|
+++ openssh-7.9p1/progressmeter.c
|
||
|
@@ -1,4 +1,4 @@
|
||
|
-/* $OpenBSD: progressmeter.c,v 1.46 2019/01/23 08:01:46 dtucker Exp $ */
|
||
|
+/* $OpenBSD: progressmeter.c,v 1.47 2019/01/24 16:52:17 dtucker Exp $ */
|
||
|
/*
|
||
|
* Copyright (c) 2003 Nils Nordman. All rights reserved.
|
||
|
*
|
||
|
@@ -59,9 +59,6 @@ static void format_rate(char *, int, off
|
||
|
static void sig_winch(int);
|
||
|
static void setscreensize(void);
|
||
|
|
||
|
-/* updates the progressmeter to reflect the current state of the transfer */
|
||
|
-void refresh_progress_meter(void);
|
||
|
-
|
||
|
/* signal handler for updating the progress meter */
|
||
|
static void sig_alarm(int);
|
||
|
|
||
|
@@ -120,7 +117,7 @@ format_size(char *buf, int size, off_t b
|
||
|
}
|
||
|
|
||
|
void
|
||
|
-refresh_progress_meter(void)
|
||
|
+refresh_progress_meter(int force_update)
|
||
|
{
|
||
|
char buf[MAX_WINSIZE + 1];
|
||
|
off_t transferred;
|
||
|
@@ -131,7 +128,7 @@ refresh_progress_meter(void)
|
||
|
int hours, minutes, seconds;
|
||
|
int file_len;
|
||
|
|
||
|
- if ((!alarm_fired && !win_resized) || !can_output())
|
||
|
+ if ((!force_update && !alarm_fired && !win_resized) || !can_output())
|
||
|
return;
|
||
|
alarm_fired = 0;
|
||
|
|
||
|
@@ -254,7 +251,7 @@ start_progress_meter(const char *f, off_
|
||
|
bytes_per_second = 0;
|
||
|
|
||
|
setscreensize();
|
||
|
- refresh_progress_meter();
|
||
|
+ refresh_progress_meter(1);
|
||
|
|
||
|
signal(SIGALRM, sig_alarm);
|
||
|
signal(SIGWINCH, sig_winch);
|
||
|
@@ -271,7 +268,7 @@ stop_progress_meter(void)
|
||
|
|
||
|
/* Ensure we complete the progress */
|
||
|
if (cur_pos != end_pos)
|
||
|
- refresh_progress_meter();
|
||
|
+ refresh_progress_meter(1);
|
||
|
|
||
|
atomicio(vwrite, STDOUT_FILENO, "\n", 1);
|
||
|
}
|
||
|
Index: openssh-7.9p1/progressmeter.h
|
||
|
===================================================================
|
||
|
--- openssh-7.9p1.orig/progressmeter.h
|
||
|
+++ openssh-7.9p1/progressmeter.h
|
||
|
@@ -1,4 +1,4 @@
|
||
|
-/* $OpenBSD: progressmeter.h,v 1.4 2019/01/23 08:01:46 dtucker Exp $ */
|
||
|
+/* $OpenBSD: progressmeter.h,v 1.5 2019/01/24 16:52:17 dtucker Exp $ */
|
||
|
/*
|
||
|
* Copyright (c) 2002 Nils Nordman. All rights reserved.
|
||
|
*
|
||
|
@@ -24,5 +24,5 @@
|
||
|
*/
|
||
|
|
||
|
void start_progress_meter(const char *, off_t, off_t *);
|
||
|
-void refresh_progress_meter(void);
|
||
|
+void refresh_progress_meter(int);
|
||
|
void stop_progress_meter(void);
|
||
|
Index: openssh-7.9p1/scp.c
|
||
|
===================================================================
|
||
|
--- openssh-7.9p1.orig/scp.c
|
||
|
+++ openssh-7.9p1/scp.c
|
||
|
@@ -585,7 +585,7 @@ scpio(void *_cnt, size_t s)
|
||
|
off_t *cnt = (off_t *)_cnt;
|
||
|
|
||
|
*cnt += s;
|
||
|
- refresh_progress_meter();
|
||
|
+ refresh_progress_meter(0);
|
||
|
if (limit_kbps > 0)
|
||
|
bandwidth_limit(&bwlimit, s);
|
||
|
return 0;
|
||
|
Index: openssh-7.9p1/sftp-client.c
|
||
|
===================================================================
|
||
|
--- openssh-7.9p1.orig/sftp-client.c
|
||
|
+++ openssh-7.9p1/sftp-client.c
|
||
|
@@ -101,7 +101,7 @@ sftpio(void *_bwlimit, size_t amount)
|
||
|
{
|
||
|
struct bwlimit *bwlimit = (struct bwlimit *)_bwlimit;
|
||
|
|
||
|
- refresh_progress_meter();
|
||
|
+ refresh_progress_meter(0);
|
||
|
if (bwlimit != NULL)
|
||
|
bandwidth_limit(bwlimit, amount);
|
||
|
return 0;
|