From 781c0df508897b0a9187b08ee3bdccd746d49839 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Thu, 2 Jan 2014 21:04:01 -0500 Subject: [PATCH] e2image: eliminate division by zero Dividing a floating point number by zero is undefined in C. It happens to work with gcc/glibc, but it's not something that's guaranteed. Addresses-Coverity-ID: #1147781 Signed-off-by: "Theodore Ts'o" Reviewed-by: Eric Sandeen --- misc/e2image.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/misc/e2image.c b/misc/e2image.c index 253fad1..ac62ffe 100644 --- a/misc/e2image.c +++ b/misc/e2image.c @@ -704,14 +704,15 @@ more_blocks: if (show_progress) { time_t duration = time(NULL) - start_time; char buff[30]; - while (bscount--) - fputc('\b', stderr); + fputc('\r', stderr); strftime(buff, 30, "%T", gmtime(&duration)); - fprintf(stderr, _("\b\b\b\b\b\b\b\bCopied %llu / %llu " - "blocks (%d%%) in %s at %.2f MB/s \n"), - total_written, meta_blocks_count, - calc_percent(total_written, meta_blocks_count), buff, - calc_rate(total_written, fs->blocksize, duration)); + fprintf(stderr, _("Copied %llu / %llu blocks (%d%%) in %s "), + total_written, meta_blocks_count, + calc_percent(total_written, meta_blocks_count), buff); + if (duration) + fprintf(stderr, _("at %.2f MB/s"), + calc_rate(total_written, fs->blocksize, duration)); + fputs(" \n", stderr); } #ifdef HAVE_FTRUNCATE64 if (sparse) { -- 1.8.3.1