[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/1] fat: fix listing the root directory
From: |
Vladimir 'phcoder' Serbinenko |
Subject: |
Re: [PATCH 1/1] fat: fix listing the root directory |
Date: |
Sat, 22 Jan 2022 10:07:28 +0100 |
Inserting dummy date of 1970-1-1 is a bad idea. Can we rather allow
timestamp to be missing instead of throwing error?
On Fri, Jan 21, 2022 at 8:33 PM Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> ls / for a FAT partition leads to
>
> error: invalid modification timestamp for /.
>
> Not all entries of the directory are displayed.
>
> Linux never updates the modification timestamp of the /. directory entry.
> The FAT specification allows the access and creation date fields to be
> zero.
>
> We should follow Linux and render initial FAT timestamps as start of
> the epoch.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
> grub-core/fs/fat.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/grub-core/fs/fat.c b/grub-core/fs/fat.c
> index dd82e4ee3..35ff0b27c 100644
> --- a/grub-core/fs/fat.c
> +++ b/grub-core/fs/fat.c
> @@ -901,6 +901,18 @@ grub_fat_timestamp (grub_uint16_t time, grub_uint16_t
> date, grub_int64_t *nix) {
> .second = (time & 0x001F) * 2,
> };
>
> + /*
> + * The modification time of the root directory is never set by Linux.
> + * Creation and access time are optional and can be zero.
> + * Follow Linux and render FAT initial timestamps as the start of the
> epoch.
> + */
> + if (date == 0 && time == 0)
> + {
> + datetime.year = 1970;
> + datetime.month = 1;
> + datetime.day = 1;
> + }
> +
> /* The conversion below allows seconds=60, so don't trust its validation.
> */
> if ((time & 0x1F) > 29)
> return 0;
> --
> 2.33.1
>
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel
--
Regards
Vladimir 'phcoder' Serbinenko