Allow print_size to print in GB
authorBecky Bruce <becky.bruce@freescale.com>
Wed, 9 Jul 2008 16:09:41 +0000 (11:09 -0500)
committerWolfgang Denk <wd@denx.de>
Wed, 9 Jul 2008 20:50:20 +0000 (22:50 +0200)
Signed-off-by: Becky Bruce <becky.bruce@freescale.com>
lib_generic/display_options.c

index a52fa045481545dcc6f14e782e5af94021ee465f..2dc2567410ba69636d9f51fcb0dc1d55ce019cf4 100644 (file)
@@ -39,27 +39,35 @@ int display_options (void)
 }
 
 /*
- * print sizes as "xxx kB", "xxx.y kB", "xxx MB" or "xxx.y MB" as needed;
- * allow for optional trailing string (like "\n")
+ * print sizes as "xxx kB", "xxx.y kB", "xxx MB", "xxx.y MB",
+ * 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)
 {
-       ulong m, n;
-       ulong d = 1 << 20;              /* 1 MB */
-       char  c = 'M';
-
-       if (size < d) {                 /* print in kB */
-               c = 'k';
-               d = 1 << 10;
+       ulong m = 0, n;
+       phys_size_t d = 1 << 30;                /* 1 GB */
+       char  c = 'G';
+
+       if (size < d) {                 /* try MB */
+               c = 'M';
+               d = 1 << 20;
+               if (size < d) {         /* print in kB */
+                       c = 'k';
+                       d = 1 << 10;
+               }
        }
 
        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) {
-               m -= 10;
-               n += 1;
+               if (m >= 10) {
+                       m -= 10;
+                       n += 1;
+               }
        }
 
        printf ("%2ld", n);