diff --git a/grub-core/commands/ls.c b/grub-core/commands/ls.c index c746eae0c..6a1c7f5d3 100644 --- a/grub-core/commands/ls.c +++ b/grub-core/commands/ls.c @@ -131,20 +131,20 @@ print_files_long (const char *filename, const struct grub_dirhook_info *info, should be reported as directories. */ file = grub_file_open (pathname, GRUB_FILE_TYPE_GET_SIZE | GRUB_FILE_TYPE_NO_DECOMPRESS); - if (! file) + if (file) { - grub_errno = 0; - grub_free (pathname); - return 0; - } - - if (! ctx->human) - grub_printf ("%-12llu", (unsigned long long) file->size); - else - grub_printf ("%-12s", grub_get_human_size (file->size, + if (! ctx->human) + grub_printf ("%-12llu", (unsigned long long) file->size); + else + grub_printf ("%-12s", grub_get_human_size (file->size, GRUB_HUMAN_SIZE_SHORT)); - grub_file_close (file); + grub_file_close (file); + } + else + grub_xputs ("????????????"); + grub_free (pathname); + grub_errno = GRUB_ERR_NONE; } else grub_printf ("%-12s", _("DIR"));