commands/ls: Print "????????????" if unable to get file size

In long list mode, if the file can not be opened, the file is not printed.
Instead, print the file but print the size as "????????????".

Signed-off-by: Glenn Washburn <development@efficientek.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Glenn Washburn 2023-08-14 01:20:29 -05:00 committed by Daniel Kiper
parent 6889c67fe7
commit 4fdcb339bb

View File

@ -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"));