Somewhere lies a bug. The following code snippet: #include <stdio.h> #include <time.h> int main() { struct tm t; time_t now = time((void*)0); localtime_r(&now, &t); t.tm_isdst = 1; printf("%ld\n", mktime(&t)); t.tm_isdst = 0; printf("%ld\n", mktime(&t)); t.tm_isdst = -1; printf("%ld\n", mktime(&t)); } Yields: 1618928503 1618932103 1618932103 This is true on FreeBSD 13 and Ubuntu 18.04, both fully patched.
-michael On Tue, Apr 20, 2021 at 7:04 AM Richard Cochran <richardcoch...@gmail.com> wrote: > On Tue, Apr 20, 2021 at 11:44:06AM +0200, Lars Munch wrote: > > tm_isdst needs to be initialized to make sure mktime does not fail > > or calculates the wrong time. > > No, take a look at the mktime(3) man page. There you will read the > following. > > The mktime() function modifies the fields of the tm structure as > fol‐ > lows: tm_wday and tm_yday are set to values determined from the > con‐ > tents of the other fields; if structure members are outside > their > valid interval, they will be normalized (so that, for example, 40 > Oc‐ > tober is changed into 9 November); tm_isdst is set (regardless of > its > initial value) to a positive value or to 0, respectively, to > indicate > whether DST is or is not in effect at the specified time. > > Thanks, > Richard > > > _______________________________________________ > Linuxptp-devel mailing list > Linuxptp-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linuxptp-devel >
_______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel