diff --git a/src/header/time/mod.rs b/src/header/time/mod.rs index ff0c2a2283..2c5a611097 100644 --- a/src/header/time/mod.rs +++ b/src/header/time/mod.rs @@ -66,7 +66,7 @@ static mut ASCTIME: [c_char; 26] = [0; 26]; // We don't handle timezones, so just initialize the timezone info to GMT // TODO: timezones -#[repr(C)] +#[repr(transparent)] pub struct TzName { tz: [*const c_char; 2], } @@ -75,13 +75,13 @@ unsafe impl Sync for TzName {} #[allow(non_upper_case_globals)] #[no_mangle] -pub static tzname: TzName = TzName { tz: [UTC, UTC] }; +pub static mut tzname: TzName = TzName { tz: [UTC, UTC] }; #[allow(non_upper_case_globals)] #[no_mangle] -pub static daylight: c_int = 0; +pub static mut daylight: c_int = 0; #[allow(non_upper_case_globals)] #[no_mangle] -pub static timezone: c_long = 0; +pub static mut timezone: c_long = 0; #[repr(C)] pub struct itimerspec { diff --git a/tests/Makefile b/tests/Makefile index 4c08211820..d28dc313b9 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -84,6 +84,7 @@ EXPECT_NAMES=\ time/mktime \ time/strftime \ time/time \ + time/tzset \ tls \ unistd/access \ unistd/brk \ diff --git a/tests/expected/bins_static/time/tzset.stderr b/tests/expected/bins_static/time/tzset.stderr new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/expected/bins_static/time/tzset.stdout b/tests/expected/bins_static/time/tzset.stdout new file mode 100644 index 0000000000..9962d8acc0 --- /dev/null +++ b/tests/expected/bins_static/time/tzset.stdout @@ -0,0 +1 @@ +tzname[0] UTC, tzname[1] UTC, daylight 0, timezone 0 diff --git a/tests/time/tzset.c b/tests/time/tzset.c new file mode 100644 index 0000000000..f48c9e050b --- /dev/null +++ b/tests/time/tzset.c @@ -0,0 +1,16 @@ +#include +#include +#include +#include + +extern int daylight; +extern long timezone; +extern const char *tzname[2]; +void tzset(void); + +int main(void) { + tzset(); + printf("tzname[0] %s, tzname[1] %s, daylight %d, timezone %ld\n", + tzname[0], tzname[1], daylight, timezone); + return 0; +}