mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
42 lines
1.4 KiB
C
Vendored
42 lines
1.4 KiB
C
Vendored
/**
|
|
* 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();
|
|
}
|