Indeed, any positive random number in tm.tm_isdst will set DST in effect it seems.
On my stripped down ARM system with no timezone information, it will simply return -1. On Tue, Apr 20, 2021 at 4:26 PM Michael Galassi <mich...@galassi.us> wrote: > 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