/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ #undef __MSVCRT_VERSION__ #define _UCRT #include // These are required to provide the unrepfixed data symbols "timezone" // and "tzname"; we can't remap "timezone" via a define due to clashes // with e.g. "struct timezone". typedef void __cdecl (*_tzset_func)(void); extern _tzset_func __MINGW_IMP_SYMBOL(_tzset); // Default initial values until _tzset has been called; these are the same // as the initial values in msvcrt/ucrtbase. static char initial_tzname0[] = "PST"; static char initial_tzname1[] = "PDT"; static char *initial_tznames[] = { initial_tzname0, initial_tzname1 }; static long initial_timezone = 28800; static int initial_daylight = 1; char** __MINGW_IMP_SYMBOL(tzname) = initial_tznames; long * __MINGW_IMP_SYMBOL(timezone) = &initial_timezone; int * __MINGW_IMP_SYMBOL(daylight) = &initial_daylight; void __cdecl _tzset(void) { __MINGW_IMP_SYMBOL(_tzset)(); // Redirect the __imp_ pointers to the actual data provided by the UCRT. // From this point, the exposed values should stay in sync. __MINGW_IMP_SYMBOL(tzname) = _tzname; __MINGW_IMP_SYMBOL(timezone) = __timezone(); __MINGW_IMP_SYMBOL(daylight) = __daylight(); } void __cdecl tzset(void) { _tzset(); }