Allow print_size to print in GB

Signed-off-by: Becky Bruce <becky.bruce@freescale.com>
master
Becky Bruce 16 years ago committed by Wolfgang Denk
parent c956717ab2
commit 417faf285b
  1. 34
      lib_generic/display_options.c

@ -39,27 +39,35 @@ int display_options (void)
} }
/* /*
* print sizes as "xxx kB", "xxx.y kB", "xxx MB" or "xxx.y MB" as needed; * print sizes as "xxx kB", "xxx.y kB", "xxx MB", "xxx.y MB",
* allow for optional trailing string (like "\n") * xxx GB, or xxx.y GB as needed; allow for optional trailing string
* (like "\n")
*/ */
void print_size (phys_size_t size, const char *s) void print_size (phys_size_t size, const char *s)
{ {
ulong m, n; ulong m = 0, n;
ulong d = 1 << 20; /* 1 MB */ phys_size_t d = 1 << 30; /* 1 GB */
char c = 'M'; char c = 'G';
if (size < d) { /* print in kB */ if (size < d) { /* try MB */
c = 'k'; c = 'M';
d = 1 << 10; d = 1 << 20;
if (size < d) { /* print in kB */
c = 'k';
d = 1 << 10;
}
} }
n = size / d; n = size / d;
m = (10 * (size - (n * d)) + (d / 2) ) / d; /* If there's a remainder, deal with it */
if(size % d) {
m = (10 * (size - (n * d)) + (d / 2) ) / d;
if (m >= 10) { if (m >= 10) {
m -= 10; m -= 10;
n += 1; n += 1;
}
} }
printf ("%2ld", n); printf ("%2ld", n);

Loading…
Cancel
Save