From 44ed5727b3dc797296f8e63a4b6ed4e53f9a2d86 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Wed, 2 Mar 2011 14:16:57 +1100 Subject: [PATCH] Clean up and fix times displayed. Merge fixes. --- main.c | 6 +++--- rzip.c | 19 +++++++++++++------ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/main.c b/main.c index accdd9e..8ba4266 100644 --- a/main.c +++ b/main.c @@ -1072,10 +1072,10 @@ int main(int argc, char *argv[]) total_time = (end_time.tv_sec + (double)end_time.tv_usec / 1000000) - (start_time.tv_sec + (double)start_time.tv_usec / 1000000); hours = (int)total_time / 3600; - minutes = (int)(total_time - hours * 3600) / 60; - seconds = total_time - hours * 60 - minutes * 60; + minutes = (int)(total_time / 60) % 60; + seconds = total_time - hours * 3600 - minutes * 60; if (!INFO) - print_progress("Total time: %02d:%02d:%06.3f\n", hours, minutes, seconds); + print_progress("Total time: %02d:%02d:%05.2f\n", hours, minutes, seconds); } return 0; diff --git a/rzip.c b/rzip.c index 7b43a35..a3cfb29 100644 --- a/rzip.c +++ b/rzip.c @@ -906,14 +906,19 @@ retry: gettimeofday(¤t, NULL); /* this will count only when size > window */ if (last.tv_sec > 0) { + unsigned int eta_hours, eta_minutes, eta_seconds, elapsed_time, finish_time, + elapsed_hours, elapsed_minutes, elapsed_seconds, diff_seconds; + elapsed_time = current.tv_sec - start.tv_sec; finish_time = elapsed_time / (pct_base / 100.0); - elapsed_hours = (unsigned int)(elapsed_time) / 3600; - elapsed_minutes = (unsigned int)(elapsed_time - elapsed_hours * 3600) / 60; - elapsed_seconds = (unsigned int) elapsed_time - elapsed_hours * 60 - elapsed_minutes * 60; - eta_hours = (unsigned int)(finish_time - elapsed_time) / 3600; - eta_minutes = (unsigned int)((finish_time - elapsed_time) - eta_hours * 3600) / 60; - eta_seconds = (unsigned int)(finish_time - elapsed_time) - eta_hours * 60 - eta_minutes * 60; + elapsed_hours = elapsed_time / 3600; + elapsed_minutes = (elapsed_time / 60) % 60; + elapsed_seconds = elapsed_time % 60; + diff_seconds = finish_time - elapsed_time; + eta_hours = diff_seconds / 3600; + eta_minutes = (diff_seconds / 60) % 60; + eta_seconds = diff_seconds % 60; + chunkmbs = (last_chunk / 1024 / 1024) / (double)(current.tv_sec-last.tv_sec); if (!STDIN || st->stdin_eof) print_verbose("\nPass %d / %d -- Elapsed Time: %02d:%02d:%02d. ETA: %02d:%02d:%02d. Compress Speed: %3.3fMB/s.\n", @@ -925,7 +930,9 @@ retry: } last.tv_sec = current.tv_sec; last.tv_usec = current.tv_usec; + rzip_chunk(st, fd_in, fd_out, offset, pct_base, pct_multiple); + /* st->chunk_size may be shrunk in rzip_chunk */ last_chunk = st->chunk_size; len -= st->chunk_size;