summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/display_options.c6
-rw-r--r--test/lib/test_print.c3
2 files changed, 9 insertions, 0 deletions
diff --git a/lib/display_options.c b/lib/display_options.c
index 7feb446a55..80def5201f 100644
--- a/lib/display_options.c
+++ b/lib/display_options.c
@@ -127,6 +127,12 @@ void print_size(uint64_t size, const char *s)
if (m >= 10) {
m -= 10;
n += 1;
+
+ if (n == 1024 && i > 0) {
+ n = 1;
+ m = 0;
+ c = names[i - 1];
+ }
}
}
diff --git a/test/lib/test_print.c b/test/lib/test_print.c
index a60a5a51f1..79b67c7793 100644
--- a/test/lib/test_print.c
+++ b/test/lib/test_print.c
@@ -68,6 +68,9 @@ static int lib_test_print_size(struct unit_test_state *uts)
ut_assertok(test_print_size(uts, 7654321, "7.3 MiB;"));
ut_assertok(test_print_size(uts, 87654321, "83.6 MiB;"));
ut_assertok(test_print_size(uts, 987654321, "941.9 MiB;"));
+ ut_assertok(test_print_size(uts, 1073689395, "1023.9 MiB;"));
+ ut_assertok(test_print_size(uts, 1073689396, "1 GiB;"));
+ ut_assertok(test_print_size(uts, 1073741824, "1 GiB;"));
ut_assertok(test_print_size(uts, 1987654321, "1.9 GiB;"));
ut_assertok(test_print_size(uts, 54321987654321, "49.4 TiB;"));
return 0;