[PATCH] prevent negative "time left" values with --progress when file grows

Paul Slootman paul at debian.org
Wed Aug 1 12:54:31 GMT 2007


[ see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=415648 ]

When a source file grows during transfer, rsync may show negative time
values such as 0:-1:-34. The following patch replaces then negative
times with ??:??:?? in such cases (as IMHO it's not worth the bother of
getting the filesize again etc. in such cases, but showing garbage info
is wrong as well).

Paul Slootman

Index: progress.c
===================================================================
RCS file: /cvsroot/rsync/progress.c,v
retrieving revision 1.23
diff -u -r1.23 progress.c
--- progress.c	10 Jul 2007 13:55:49 -0000	1.23
+++ progress.c	1 Aug 2007 12:43:33 -0000
@@ -104,9 +104,16 @@
 			stats.num_files);
 	} else
 		strlcpy(eol, "\r", sizeof eol);
-	rprintf(FCLIENT, "%12s %3d%% %7.2f%s %4d:%02d:%02d%s",
-		human_num(ofs), pct, rate, units,
-		remain_h, remain_m, remain_s, eol);
+	if (remain < 0)
+		/* file size increased on sending side during xfer */
+		/* so prevent negative times like 0:-1:-49         */
+		rprintf(FCLIENT, "%12s %3d%% %7.2f%s   ??:??:??%s",
+			human_num(ofs), pct, rate, units,
+			eol);
+	else
+		rprintf(FCLIENT, "%12s %3d%% %7.2f%s %4d:%02d:%02d%s",
+			human_num(ofs), pct, rate, units,
+			remain_h, remain_m, remain_s, eol);
 }
 
 void end_progress(OFF_T size)


More information about the rsync mailing list