On 11/29/23 14:07, Robert Elz wrote:
anything which fails to convert (as accurately as is believed possible) any time_t which can be represented in a struct tm wouldn't be POSIX conformant.
Such an implementation would conform to current POSIX, because the only way to get the failing behavior is with a TZ setting like TZ='/name/of/truncated/TZ/file' that is not POSIX-conforming, and with such a TZ setting the implementation can do what it likes. POSIX 202x/D3 tightens this up, though, as it requires support for geographical and special timezones like TZ='Europe/London'. The details of this are a bit hazy, unfortunately, and I suppose an implementer determined to make localtime fail on timestamps outside a truncated TZif file's range might be able to argue that POSIX allows that. Anyway as a practical matter I agree with you. Regardless of what POSIX says, having localtime fail merely because a TZif file is truncated would break so many applications that it's not a plausible implementation.