Andrew Fish
2015-06-11 01:26:22 UTC
Dear ShellPkg maintainer,
I think there is an issue with the ls command. It does not use the TImeZone, so it seems it is hard coded to assume that a filesystem stores time like FAT, in local time. The FAT driver always returns EFI_UNSPECIFIED_TIMEZONE, which implies the values are local time. But what if a filesystem is storing time in UTC (EFI_TIME.TimeZone == 0)? it seems the current path in the shell assumes EFI_UNSPECIFIED_TIMEZONE (thus all time is local time). I don’t think this follows the UEFI spec. I think the correct algorithm is:
if FileSystemTime.TimeZone == EFI_UNSPECIFIED_TIMEZONE
// This is the current path in the code
Assume time is local time, and print it out
else:
// This is the missing path.
Adjust the FileSystemTime.TimeZone for the System.TimeZone (and System.Daylight), thus display the time in local time.
Thanks,
Andrew Fish
------------------------------------------------------------------------------
I think there is an issue with the ls command. It does not use the TImeZone, so it seems it is hard coded to assume that a filesystem stores time like FAT, in local time. The FAT driver always returns EFI_UNSPECIFIED_TIMEZONE, which implies the values are local time. But what if a filesystem is storing time in UTC (EFI_TIME.TimeZone == 0)? it seems the current path in the shell assumes EFI_UNSPECIFIED_TIMEZONE (thus all time is local time). I don’t think this follows the UEFI spec. I think the correct algorithm is:
if FileSystemTime.TimeZone == EFI_UNSPECIFIED_TIMEZONE
// This is the current path in the code
Assume time is local time, and print it out
else:
// This is the missing path.
Adjust the FileSystemTime.TimeZone for the System.TimeZone (and System.Daylight), thus display the time in local time.
Thanks,
Andrew Fish
------------------------------------------------------------------------------