From: Theodore Ts'o Date: Fri, 3 Jan 2014 02:04:01 +0000 (-0500) Subject: e2image: eliminate division by zero X-Git-Tag: v1.42.10~148 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=781c0df508897b0a9187b08ee3bdccd746d49839;p=thirdparty%2Fe2fsprogs.git 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 --- diff --git a/misc/e2image.c b/misc/e2image.c index 253fad1d0..ac62ffec7 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) {