Sujet : Re: Y2K38 bug (January 19, 2038)
De : geoff (at) *nospam* clare.See-My-Signature.invalid (Geoff Clare)
Groupes : comp.lang.awkDate : 13. Mar 2024, 14:46:30
Autres entêtes
Message-ID : <man8ck-pdr.ln1@ID-313840.user.individual.net>
References : 1 2 3 4 5 6 7 8
User-Agent : Pan/0.154 (Izium; 517acf4)
Keith Thompson wrote:
Christian Weisgerber <naddy@mips.inka.de> writes:
On 2024-03-12, Geoff Clare <geoff@clare.See-My-Signature.invalid> wrote:
Also, having signed time_t doesn't necessarily mean that dates before
Jan 1970 are supported.
>
mktime(3) is documented to return (time_t)-1 in case of error, which
bodes ill for Dec 31, 1969, 23:59:59 UTC.
It can still return a correct value of -1. It does make it difficult
for the caller to determine whether a -1 return value denotes an error
or not.
C23 has introduced a way to distinguish the cases. It says:
[on error] the function returns the value (time_t)(-1) and does
not change the value of the tm_wday component of the structure.
This will also be in the forthcoming POSIX.1 revision, which adds
this advice:
Since (time_t)−1 is a valid return value for a successful call to
mktime(), an application wishing to check for error situations
should set tm_wday to a value less than 0 or greater than 6 before
calling mktime(). On return, if tm_wday has not changed an error
has occurred.
-- Geoff Clare <netnews@gclare.org.uk>