AFAICS from 9899 1998 Draft to 2023, the *mktime* wording has been essentially:
"The original values of the tm_wday and tm_yday components of the structure are
ignored, and the original values of the other components are not restricted to
the ranges indicated above. On successful completion, the values of the tm_wday
and tm_yday components of the structure are set appropriately,"
so the recommendation has been to do something like (pointless example):
time_t tt = time(&tt);
struct tm *tm = localtime(&tt);
tm->tm_wday = tm->tm_yday = -1;
if ((tt = mktime(tm)) == -1 && tm->tm_wday == -1 && tm->tm_yday == -1)
error(...);
--
Take care. Thanks, Brian Inglis Calgary, Alberta, Canada
La perfection est atteinte Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter not when there is no more to add
mais lorsqu'il n'y a plus rien à retirer but when there is no more to cut
-- Antoine de Saint-Exupéry