[tz] timegm() function and state

Paul Eggert eggert at cs.ucla.edu
Fri Aug 3 14:45:45 UTC 2012


I tried to reproduce that configuration under Ubuntu but still did
not see the problem.  Here's how I built it:

make CFLAGS='-DNOID -DUSG_COMPAT -DSTD_INSPIRED -DPCTS -DTM_GMTOFF=tm_gmtoff -DTM_ZONE=tm_zone -DTZDEFRULESTRING=\",M3.2.0/2,M11.1.0/2\"' TOPDIR=/tmp/top install
gcc -I. test.c /tmp/top/lib/libtz.a 

and here's my test program:

#include <string.h>
#include <errno.h>
#include <stdio.h>
#include <time.h>
 int main(int argc, char *argv[]) {
        struct tm localt;

        localt.tm_sec = 0;
        localt.tm_min = 0;
        localt.tm_hour = 0;
        localt.tm_mday = 1;
        localt.tm_year = 113;
        localt.tm_mon = 0;
        localt.tm_wday = 0;
        localt.tm_yday = 0;
        localt.tm_isdst = 0;
        localt.tm_gmtoff = 0;
        localt.tm_zone = 0;
        mktime(&localt);

        printf("asctime: %s", asctime(&localt));
        printf("timegm(&localt) = %ld (errno %s)\n", timegm(&localt), strerror(errno));
        printf("timegm(&localt) = %ld (errno %s)\n", timegm(&localt), strerror(errno));
        printf("timegm(&localt) = %ld (errno %s)\n", timegm(&localt), strerror(errno));

        return 0;
    }

and its output:

asctime: Tue Jan  1 00:00:00 2013
timegm(&localt) = 1356998400 (errno Success)
timegm(&localt) = 1356998400 (errno Success)
timegm(&localt) = 1356998400 (errno Success)



More information about the tz mailing list