Mention updated config files.
[rsync.git] / progress.c
index d1cf8caa4de842f9bae79b658ca6a7fbe914409d..87207fbfa8c2814e83cb5e24e213c5b5f03cbfbb 100644 (file)
@@ -4,7 +4,7 @@
  * Copyright (C) 1996-2000 Andrew Tridgell
  * Copyright (C) 1996 Paul Mackerras
  * Copyright (C) 2001, 2002 Martin Pool <mbp@samba.org>
- * Copyright (C) 2003-2019 Wayne Davison
+ * Copyright (C) 2003-2022 Wayne Davison
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -66,8 +66,7 @@ static unsigned long msdiff(struct timeval *t1, struct timeval *t2)
  * printed for this file, so we should output a newline.  (Not
  * necessarily the same as all bytes being received.)
  **/
-static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now,
-                           int is_last)
+static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now, int is_last)
 {
        char rembuf[64], eol[128];
        const char *units;
@@ -92,8 +91,7 @@ static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now,
                        is_last = 0;
                }
                /* Compute stats based on the starting info. */
-               if (!ph_start.time.tv_sec
-                   || !(diff = msdiff(&ph_start.time, now)))
+               if (!ph_start.time.tv_sec || !(diff = msdiff(&ph_start.time, now)))
                        diff = 1;
                rate = (double) (ofs - ph_start.ofs) * 1000.0 / diff / 1024.0;
                /* Switch to total time taken for our last update. */
@@ -103,8 +101,7 @@ static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now,
                /* Compute stats based on recent progress. */
                if (!(diff = msdiff(&ph_list[oldest_hpos].time, now)))
                        diff = 1;
-               rate = (double) (ofs - ph_list[oldest_hpos].ofs) * 1000.0
-                    / diff / 1024.0;
+               rate = (double) (ofs - ph_list[oldest_hpos].ofs) * 1000.0 / diff / 1024.0;
                remain = rate ? (double) (size - ofs) / rate / 1000.0 : 0.0;
        }
 
@@ -118,13 +115,13 @@ static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now,
                units = "kB/s";
        }
 
-       if (remain < 0)
+       if (remain < 0 || remain > 9999.0 * 3600.0)
                strlcpy(rembuf, "  ??:??:??", sizeof rembuf);
        else {
-               snprintf(rembuf, sizeof rembuf, "%4d:%02d:%02d",
-                        (int) (remain / 3600.0),
-                        (int) (remain / 60.0) % 60,
-                        (int) remain % 60);
+               snprintf(rembuf, sizeof rembuf, "%4u:%02u:%02u",
+                        (unsigned int) (remain / 3600.0),
+                        (unsigned int) (remain / 60.0) % 60,
+                        (unsigned int) remain % 60);
        }
 
        output_needs_newline = 0;