diff --git a/src/header/time/mod.rs b/src/header/time/mod.rs index 2c5a611097..cebe2ac512 100644 --- a/src/header/time/mod.rs +++ b/src/header/time/mod.rs @@ -68,14 +68,22 @@ static mut ASCTIME: [c_char; 26] = [0; 26]; // TODO: timezones #[repr(transparent)] pub struct TzName { - tz: [*const c_char; 2], + tz: [*mut c_char; 2], } unsafe impl Sync for TzName {} +static mut TZ_STD: [c_char; 8] = [b'U' as c_char, b'T' as c_char, b'C' as c_char, 0, 0, 0, 0, 0]; +static mut TZ_DST: [c_char; 8] = [b'U' as c_char, b'T' as c_char, b'C' as c_char, 0, 0, 0, 0, 0]; + #[allow(non_upper_case_globals)] #[no_mangle] -pub static mut tzname: TzName = TzName { tz: [UTC, UTC] }; +pub static mut tzname: TzName = TzName { + tz: [ + unsafe { TZ_DST.as_mut_ptr() }, + unsafe { TZ_DST.as_mut_ptr() }, + ] }; + #[allow(non_upper_case_globals)] #[no_mangle] pub static mut daylight: c_int = 0; @@ -487,7 +495,7 @@ pub extern "C" fn timer_delete(timerid: timer_t) -> c_int { #[no_mangle] pub extern "C" fn tzset() { - // no-op because we only do GMT + // no-op because we only do UTC // TODO: timezones, parse env var TZ } diff --git a/tests/time/tzset.c b/tests/time/tzset.c index f48c9e050b..87fa15f719 100644 --- a/tests/time/tzset.c +++ b/tests/time/tzset.c @@ -5,7 +5,7 @@ extern int daylight; extern long timezone; -extern const char *tzname[2]; +extern char *tzname[2]; void tzset(void); int main(void) {