[PATCH] Fix spurious eta output

From: Aaron Carroll <aaronc_at_gelato.unsw.edu.au>
Date: Fri, 26 Oct 2007 14:42:27 +1000

 - Pad eta output with enough spaces to overwrite remaining characters
   from the end of previous lines;
 - Wrap an overly-long line.

---
 eta.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/eta.c b/eta.c
index 22efd33..d385532 100644
--- a/eta.c
+++ b/eta.c
@@ -192,11 +192,13 @@ void print_thread_status(void)
 	unsigned long long io_bytes[2];
 	unsigned long rate_time, disp_time, bw_avg_time;
 	struct timeval now;
+	int linelen;
 
 	static unsigned long long rate_io_bytes[2];
 	static unsigned long long disp_io_bytes[2];
 	static struct timeval rate_prev_time, disp_prev_time;
 	static unsigned int rate[2];
+	static int linelen_last;
 
 	if (temp_stall_ts || terse_output || eta_print == FIO_ETA_NEVER)
 		return;
@@ -289,7 +291,11 @@ void print_thread_status(void)
 		printf(", CR=%d/%d IOPS", t_iops, m_iops);
 	if (eta_sec != INT_MAX && nr_running) {
 		perc *= 100.0;
-		printf(": [%s] [%3.1f%% done] [%6u/%6u kb/s] [eta %s]", run_str, perc, rate[0], rate[1], eta_str);
+		linelen = printf(": [%s] [%3.1f%% done] [%6u/%6u kb/s] [eta %s]",
+				 run_str, perc, rate[0], rate[1], eta_str);
+		if (linelen >= 0 && linelen < linelen_last)
+			printf("%*s", linelen_last-linelen, "");
+		linelen_last = linelen;
 	}
 	printf("\r");
 	fflush(stdout);
-- 
1.5.1.6
Received on Fri Oct 26 2007 - 06:42:27 CEST

This archive was generated by hypermail 2.2.0 : Fri Oct 26 2007 - 07:00:01 CEST