|
Message-ID: <5398FB90.7000109@sbcglobal.net> Date: Wed, 11 Jun 2014 21:00:00 -0400 From: bfdamkoehler <bfdamkoehler@...global.net> To: musl@...ts.openwall.com Subject: Re: REG_STARTEND (regex) Hello, I noticed an issue with localtime() in musl-1.1.2. In my environment TZ is set to EST5EDT. There is a test program below that demonstrates this. localtime() is returning with isdst == 1 for for a time_t value of 1394327858 (08-Mar-14 20:17). Daylight savings time starts on 09-Mar-14. Note that if you decrement the time_t value in the test program isdst remains set. This time_t value is the st_atime value of a file on my machine, as returned by stat64(). Just as further test I moved the file around to an AIX 5.2 machine, HPUX 11.11, and OpenBSD 5.0 system and a Centos 6.5 linux machine. I used ls and tar on them to display the file date and they all came out as 08-Mar-14 20:17, as does the output from my application if it is linked with the gcc libc. When my application is linked with musl it produces a time of 08-Mar-14 21:17. I just wanted to mention that I had noticed this. Bruce #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> int main() { time_t bin_time = 1394327858; /* should be 08-Mar-14 20:17 but */ /* localtime returns isdst=1 so */ /* it is 08-Mar-14 21:17 */ struct tm *tm_ptr; char *cptr; //#define GO_BACK_N_DAYS_IN_TIME #ifdef GO_BACK_N_DAYS_IN_TIME bin_time = 1394327858 - ( (24 * 60 * 60) * 60); #endif cptr = getenv("TZ"); if( cptr == NULL ) printf("the TZ environment variable is not defined\n"); else printf("the TZ environment variable is set to %s\n", cptr); tm_ptr = localtime(&bin_time); printf("The local time is ...\n"); printf("\t\ttm_sec ........... %d\n", tm_ptr->tm_sec); printf("\t\ttm_min ........... %d\n", tm_ptr->tm_min); printf("\t\ttm_hour .......... %d\n", tm_ptr->tm_hour); printf("\t\ttm_mday .......... %d\n", tm_ptr->tm_mday); printf("\t\ttm_mon ........... %d\n", tm_ptr->tm_mon); printf("\t\ttm_year .......... %d\n", tm_ptr->tm_year); printf("\t\ttm_wday .......... %d\n", tm_ptr->tm_wday); printf("\t\ttm_yday .......... %d\n", tm_ptr->tm_yday); printf("\t\ttm_is_dst......... %d\n", tm_ptr->tm_isdst); printf("\n\n"); printf("tm_hour should be 20 and tm_is_dst should be 0 -- DST starts on 09-Mar-14.\n"); printf("\n\n"); }
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.