]> git.proxmox.com Git - grub2.git/blobdiff - commands/ls.c
2008-06-15 Pavel Roskin <proski@gnu.org>
[grub2.git] / commands / ls.c
index 77af426b1bcb375805ea387dcf0862bda82df567..4257e026f0a4f04ad94cea57137ef857ff8f91d4 100644 (file)
@@ -108,21 +108,25 @@ grub_ls_list_files (char *dirname, int longlist, int all, int human)
            grub_printf ("%-12llu", (unsigned long long) file->size);
          else
            {
-             float fsize = file->size;
+             grub_uint64_t fsize = file->size * 100ULL;
              int fsz = file->size;
              int units = 0;
              char buf[20];
              
              while (fsz / 1024)
                {
-                 fsize /= 1024;
+                 fsize = (fsize + 512) / 1024;
                  fsz /= 1024;
                  units++;
                }
 
              if (units)
                {
-                 grub_sprintf (buf, "%0.2f%c", fsize, grub_human_sizes[units]);
+                 grub_uint32_t whole, fraction;
+
+                 whole = grub_divmod64 (fsize, 100, &fraction);
+                 grub_sprintf (buf, "%u.%02u%c", whole, fraction,
+                               grub_human_sizes[units]);
                  grub_printf ("%-12s", buf);
                }
              else