| /** | |
| * 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 <time.h> | |
| // 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(); | |
| } |