From: Shaleen Bathla Date: Wed, 26 Apr 2023 11:28:33 +0000 (+0530) Subject: tools: virsh-domain: display progress with enhanced granularity X-Git-Tag: v9.4.0-rc1~111 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b4f5e6c91b9871173de205f81b51cf06a833fcb1;p=thirdparty%2Flibvirt.git tools: virsh-domain: display progress with enhanced granularity Switch from int to double for displaying job progress upto 2 decimal places. Signed-off-by: Shaleen Bathla Reviewed-by: Michal Privoznik Reviewed-by: Martin Kletzander --- diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index e30510a07d..ffa586940d 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -1722,21 +1722,22 @@ static void virshPrintJobProgress(const char *label, unsigned long long remaining, unsigned long long total) { - int progress = 100; + double progress = 100.00; /* if remaining == 0 migration has completed */ if (remaining != 0) { - /* use float to avoid overflow */ - progress = (int)(100.0 - remaining * 100.0 / total); - if (progress >= 100) { + /* use double to avoid overflow */ + progress = 100.00 - remaining * 100.00 / total; + if (progress >= 100.00) { /* migration has not completed, do not print [100 %] */ - progress = 99; + progress = 99.99; } } /* see comments in vshError about why we must flush */ fflush(stdout); - fprintf(stderr, "\r%s: [%3d %%]", label, progress); + /* avoid auto-round-off of double by keeping only 2 decimals */ + fprintf(stderr, "\r%s: [%5.2f %%]", label, (int)(progress*100)/100.0); fflush(stderr); }