diff options
author | Darren Tucker <dtucker@zip.com.au> | 2013-10-10 10:25:09 +1100 |
---|---|---|
committer | Darren Tucker <dtucker@zip.com.au> | 2013-10-10 10:25:09 +1100 |
commit | 5d80e4522d6238bdefe9d0c634f0e6d35a241e41 (patch) | |
tree | 5c01ec0b38427443df83177e36dd3cce38e63139 | |
parent | ad92df7e5ed26fea85adfb3f95352d6cd8e86344 (diff) |
- djm@cvs.openbsd.org 2013/09/19 00:24:52
[progressmeter.c]
store the initial file offset so the progress meter doesn't freak out
when resuming sftp transfers. bz#2137; patch from Iain Morgan; ok dtucker@
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | progressmeter.c | 8 |
2 files changed, 9 insertions, 3 deletions
@@ -5,6 +5,10 @@ | |||
5 | Remove gssapi config parts from ssh_config, as was already done for | 5 | Remove gssapi config parts from ssh_config, as was already done for |
6 | sshd_config. Req by/ok ajacoutot@ | 6 | sshd_config. Req by/ok ajacoutot@ |
7 | ID SYNC ONLY for portable; kerberos/gssapi is still pretty popular | 7 | ID SYNC ONLY for portable; kerberos/gssapi is still pretty popular |
8 | - djm@cvs.openbsd.org 2013/09/19 00:24:52 | ||
9 | [progressmeter.c] | ||
10 | store the initial file offset so the progress meter doesn't freak out | ||
11 | when resuming sftp transfers. bz#2137; patch from Iain Morgan; ok dtucker@` | ||
8 | 12 | ||
9 | 20131009 | 13 | 20131009 |
10 | - (djm) [openbsd-compat/arc4random.c openbsd-compat/chacha_private.h] Pull | 14 | - (djm) [openbsd-compat/arc4random.c openbsd-compat/chacha_private.h] Pull |
diff --git a/progressmeter.c b/progressmeter.c index 332bd3c99..bbbc7066b 100644 --- a/progressmeter.c +++ b/progressmeter.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: progressmeter.c,v 1.39 2013/06/02 13:33:05 dtucker Exp $ */ | 1 | /* $OpenBSD: progressmeter.c,v 1.40 2013/09/19 00:24:52 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2003 Nils Nordman. All rights reserved. | 3 | * Copyright (c) 2003 Nils Nordman. All rights reserved. |
4 | * | 4 | * |
@@ -66,6 +66,7 @@ static void update_progress_meter(int); | |||
66 | static time_t start; /* start progress */ | 66 | static time_t start; /* start progress */ |
67 | static time_t last_update; /* last progress update */ | 67 | static time_t last_update; /* last progress update */ |
68 | static char *file; /* name of the file being transferred */ | 68 | static char *file; /* name of the file being transferred */ |
69 | static off_t start_pos; /* initial position of transfer */ | ||
69 | static off_t end_pos; /* ending position of transfer */ | 70 | static off_t end_pos; /* ending position of transfer */ |
70 | static off_t cur_pos; /* transfer position as of last refresh */ | 71 | static off_t cur_pos; /* transfer position as of last refresh */ |
71 | static volatile off_t *counter; /* progress counter */ | 72 | static volatile off_t *counter; /* progress counter */ |
@@ -129,7 +130,7 @@ refresh_progress_meter(void) | |||
129 | int i, len; | 130 | int i, len; |
130 | int file_len; | 131 | int file_len; |
131 | 132 | ||
132 | transferred = *counter - cur_pos; | 133 | transferred = *counter - (cur_pos ? cur_pos : start_pos); |
133 | cur_pos = *counter; | 134 | cur_pos = *counter; |
134 | now = monotime(); | 135 | now = monotime(); |
135 | bytes_left = end_pos - cur_pos; | 136 | bytes_left = end_pos - cur_pos; |
@@ -139,7 +140,7 @@ refresh_progress_meter(void) | |||
139 | else { | 140 | else { |
140 | elapsed = now - start; | 141 | elapsed = now - start; |
141 | /* Calculate true total speed when done */ | 142 | /* Calculate true total speed when done */ |
142 | transferred = end_pos; | 143 | transferred = end_pos - start_pos; |
143 | bytes_per_second = 0; | 144 | bytes_per_second = 0; |
144 | } | 145 | } |
145 | 146 | ||
@@ -251,6 +252,7 @@ start_progress_meter(char *f, off_t filesize, off_t *ctr) | |||
251 | { | 252 | { |
252 | start = last_update = monotime(); | 253 | start = last_update = monotime(); |
253 | file = f; | 254 | file = f; |
255 | start_pos = *ctr; | ||
254 | end_pos = filesize; | 256 | end_pos = filesize; |
255 | cur_pos = 0; | 257 | cur_pos = 0; |
256 | counter = ctr; | 258 | counter = ctr; |