From: Wayne Davison Date: Thu, 13 Jan 2022 16:11:50 +0000 (-0800) Subject: Display ??:??:?? when a time estimate gets too big. X-Git-Tag: v3.2.4pre2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6130c4fa3c92803d508f947e555fcd4e325f6178;p=thirdparty%2Frsync.git Display ??:??:?? when a time estimate gets too big. --- 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); }