summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWayne Davison <wayne@opencoder.net>2022-01-13 08:11:50 -0800
committerWayne Davison <wayne@opencoder.net>2022-01-13 08:22:25 -0800
commit6130c4fa3c92803d508f947e555fcd4e325f6178 (patch)
tree0c19248117750ef0f05924b6a9a5dcf7674c80be
parent8c4ceb3b86749523573fec0df38a3b315575735c (diff)
downloadrsync-6130c4fa3c92803d508f947e555fcd4e325f6178.tar.gz
Display ??:??:?? when a time estimate gets too big.
-rw-r--r--NEWS.md6
-rw-r--r--progress.c6
2 files changed, 5 insertions, 7 deletions
diff --git a/NEWS.md b/NEWS.md
index 4eebaa44..959e1da7 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -88,10 +88,8 @@
check to see if the allowed time is over, which should make rsync exit more
consistently.
- - Tweak the snprintf() in progress.c that turns the remaining time into a
- HHHH:MM:SS value to avoid putting a -8 into the SS or MM spots when the
- remaining seconds is so large that it overflows the integer arithmetic
- trying to perform a modulus.
+ - Tweak --progress to display "??:??:??" when the time-remaining value is
+ so large as to be meaningless.
### ENHANCEMENTS:
diff --git a/progress.c b/progress.c
index 6e39ce99..6af96b98 100644
--- a/progress.c
+++ b/progress.c
@@ -115,11 +115,11 @@ static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now, int is_l
units = "kB/s";
}
- if (remain < 0)
+ if (remain < 0 || remain > 9999.0 * 3600.0)
strlcpy(rembuf, " ??:??:??", sizeof rembuf);
else {
- snprintf(rembuf, sizeof rembuf, "%4lu:%02u:%02u",
- (unsigned long) (remain / 3600.0),
+ snprintf(rembuf, sizeof rembuf, "%4u:%02u:%02u",
+ (unsigned int) (remain / 3600.0),
(unsigned int) (remain / 60.0) % 60,
(unsigned int) remain % 60);
}