Ideally this and the rate printing would both be converted to a common
helper, but unfortunately the two format differently and this would break
tests and scripts out there. So just make the code look less like a wad of
hay.

Signed-off-by: Petr Machata <m...@pmachata.org>
---

Notes:
    v2:
    - This patch is new. It addresses a request from Stephen Hemminger to
      clean up the sprint_size() function.

 lib/json_print.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/lib/json_print.c b/lib/json_print.c
index c1df637642fd..d28e957c9603 100644
--- a/lib/json_print.c
+++ b/lib/json_print.c
@@ -344,13 +344,15 @@ int print_color_rate(bool use_iec, enum output_type type, 
enum color_attr color,
 
 char *sprint_size(__u32 sz, char *buf)
 {
+       long kilo = 1024;
+       long mega = kilo * kilo;
        size_t len = SPRINT_BSIZE - 1;
        double tmp = sz;
 
-       if (sz >= 1024*1024 && fabs(1024*1024*rint(tmp/(1024*1024)) - sz) < 
1024)
-               snprintf(buf, len, "%gMb", rint(tmp/(1024*1024)));
-       else if (sz >= 1024 && fabs(1024*rint(tmp/1024) - sz) < 16)
-               snprintf(buf, len, "%gKb", rint(tmp/1024));
+       if (sz >= mega && fabs(mega * rint(tmp / mega) - sz) < 1024)
+               snprintf(buf, len, "%gMb", rint(tmp / mega));
+       else if (sz >= kilo && fabs(kilo * rint(tmp / kilo) - sz) < 16)
+               snprintf(buf, len, "%gKb", rint(tmp / kilo));
        else
                snprintf(buf, len, "%ub", sz);
 
-- 
2.25.1

Reply via email to