From ff700abc721b72110227818111653b5d9c0fd5a4 Mon Sep 17 00:00:00 2001 From: getzze Date: Fri, 4 Nov 2016 01:11:01 +0000 Subject: [PATCH] free.c - name correctly the binary multiples in the human-readable case --- free.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/free.c b/free.c index 1cf3655b..9fe13cc6 100644 --- a/free.c +++ b/free.c @@ -152,14 +152,25 @@ static const char *scale_size(unsigned long size, int flags, struct commandline_ case 4: case 5: case 6: - if (4 >= - snprintf(buf, sizeof(buf), "%.1f%c", - (float)((size / 1024) * base / power(base, i - 2)), *up)) - return buf; - if (4 >= - snprintf(buf, sizeof(buf), "%ld%c", - (long)((size / 1024) * base / power(base, i - 2)), *up)) - return buf; + if (!(flags & FREE_SI)) { + if (5 >= + snprintf(buf, sizeof(buf), "%.1f%ci", + (float)((size / 1024) * base / power(base, i - 2)), *up)) + return buf; + if (5 >= + snprintf(buf, sizeof(buf), "%ld%ci", + (long)((size / 1024) * base / power(base, i - 2)), *up)) + return buf; + } else { + if (4 >= + snprintf(buf, sizeof(buf), "%.1f%c", + (float)((size / 1024) * base / power(base, i - 2)), *up)) + return buf; + if (4 >= + snprintf(buf, sizeof(buf), "%ld%c", + (long)((size / 1024) * base / power(base, i - 2)), *up)) + return buf; + } break; case 7: break;