expose tzset
This commit is contained in:
parent
047f629b31
commit
e7ca3e4db0
3 changed files with 23 additions and 1 deletions
|
@ -7,6 +7,7 @@ export
|
||||||
get_time,
|
get_time,
|
||||||
precise_time_ns,
|
precise_time_ns,
|
||||||
precise_time_s,
|
precise_time_s,
|
||||||
|
tzset,
|
||||||
tm,
|
tm,
|
||||||
empty_tm,
|
empty_tm,
|
||||||
now,
|
now,
|
||||||
|
@ -20,6 +21,7 @@ native mod rustrt {
|
||||||
fn get_time(&sec: i64, &nsec: i32);
|
fn get_time(&sec: i64, &nsec: i32);
|
||||||
fn precise_time_ns(&ns: u64);
|
fn precise_time_ns(&ns: u64);
|
||||||
|
|
||||||
|
fn rust_tzset();
|
||||||
// FIXME: The i64 values can be passed by-val when #2064 is fixed.
|
// FIXME: The i64 values can be passed by-val when #2064 is fixed.
|
||||||
fn rust_gmtime(&&sec: i64, &&nsec: i32, &&result: tm);
|
fn rust_gmtime(&&sec: i64, &&nsec: i32, &&result: tm);
|
||||||
fn rust_localtime(&&sec: i64, &&nsec: i32, &&result: tm);
|
fn rust_localtime(&&sec: i64, &&nsec: i32, &&result: tm);
|
||||||
|
@ -59,6 +61,10 @@ fn precise_time_s() -> float {
|
||||||
ret (precise_time_ns() as float) / 1000000000.;
|
ret (precise_time_ns() as float) / 1000000000.;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn tzset() {
|
||||||
|
rustrt::rust_tzset();
|
||||||
|
}
|
||||||
|
|
||||||
type tm = {
|
type tm = {
|
||||||
tm_sec: i32, // seconds after the minute [0-60]
|
tm_sec: i32, // seconds after the minute [0-60]
|
||||||
tm_min: i32, // minutes after the hour [0-59]
|
tm_min: i32, // minutes after the hour [0-59]
|
||||||
|
@ -869,6 +875,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_at_utc() {
|
fn test_at_utc() {
|
||||||
os::setenv("TZ", "America/Los_Angeles");
|
os::setenv("TZ", "America/Los_Angeles");
|
||||||
|
tzset();
|
||||||
|
|
||||||
let time = { sec: 1234567890_i64, nsec: 54321_i32 };
|
let time = { sec: 1234567890_i64, nsec: 54321_i32 };
|
||||||
let utc = at_utc(time);
|
let utc = at_utc(time);
|
||||||
|
@ -890,10 +897,13 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_at() {
|
fn test_at() {
|
||||||
os::setenv("TZ", "America/Los_Angeles");
|
os::setenv("TZ", "America/Los_Angeles");
|
||||||
|
tzset();
|
||||||
|
|
||||||
let time = { sec: 1234567890_i64, nsec: 54321_i32 };
|
let time = { sec: 1234567890_i64, nsec: 54321_i32 };
|
||||||
let local = at(time);
|
let local = at(time);
|
||||||
|
|
||||||
|
#error("time_at: %?", local);
|
||||||
|
|
||||||
assert local.tm_sec == 30_i32;
|
assert local.tm_sec == 30_i32;
|
||||||
assert local.tm_min == 31_i32;
|
assert local.tm_min == 31_i32;
|
||||||
assert local.tm_hour == 15_i32;
|
assert local.tm_hour == 15_i32;
|
||||||
|
@ -916,6 +926,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_to_timespec() {
|
fn test_to_timespec() {
|
||||||
os::setenv("TZ", "America/Los_Angeles");
|
os::setenv("TZ", "America/Los_Angeles");
|
||||||
|
tzset();
|
||||||
|
|
||||||
let time = { sec: 1234567890_i64, nsec: 54321_i32 };
|
let time = { sec: 1234567890_i64, nsec: 54321_i32 };
|
||||||
let utc = at_utc(time);
|
let utc = at_utc(time);
|
||||||
|
@ -927,6 +938,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_conversions() {
|
fn test_conversions() {
|
||||||
os::setenv("TZ", "America/Los_Angeles");
|
os::setenv("TZ", "America/Los_Angeles");
|
||||||
|
tzset();
|
||||||
|
|
||||||
let time = { sec: 1234567890_i64, nsec: 54321_i32 };
|
let time = { sec: 1234567890_i64, nsec: 54321_i32 };
|
||||||
let utc = at_utc(time);
|
let utc = at_utc(time);
|
||||||
|
@ -943,6 +955,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_strptime() {
|
fn test_strptime() {
|
||||||
os::setenv("TZ", "America/Los_Angeles");
|
os::setenv("TZ", "America/Los_Angeles");
|
||||||
|
tzset();
|
||||||
|
|
||||||
alt strptime("", "") {
|
alt strptime("", "") {
|
||||||
ok(tm) {
|
ok(tm) {
|
||||||
|
@ -1088,11 +1101,14 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_ctime() {
|
fn test_ctime() {
|
||||||
os::setenv("TZ", "America/Los_Angeles");
|
os::setenv("TZ", "America/Los_Angeles");
|
||||||
|
tzset();
|
||||||
|
|
||||||
let time = { sec: 1234567890_i64, nsec: 54321_i32 };
|
let time = { sec: 1234567890_i64, nsec: 54321_i32 };
|
||||||
let utc = at_utc(time);
|
let utc = at_utc(time);
|
||||||
let local = at(time);
|
let local = at(time);
|
||||||
|
|
||||||
|
#error("test_ctime: %? %?", utc.ctime(), local.ctime());
|
||||||
|
|
||||||
assert utc.ctime() == "Fri Feb 13 23:31:30 2009";
|
assert utc.ctime() == "Fri Feb 13 23:31:30 2009";
|
||||||
assert local.ctime() == "Fri Feb 13 15:31:30 2009";
|
assert local.ctime() == "Fri Feb 13 15:31:30 2009";
|
||||||
}
|
}
|
||||||
|
@ -1100,6 +1116,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_strftime() {
|
fn test_strftime() {
|
||||||
os::setenv("TZ", "America/Los_Angeles");
|
os::setenv("TZ", "America/Los_Angeles");
|
||||||
|
tzset();
|
||||||
|
|
||||||
let time = { sec: 1234567890_i64, nsec: 54321_i32 };
|
let time = { sec: 1234567890_i64, nsec: 54321_i32 };
|
||||||
let utc = at_utc(time);
|
let utc = at_utc(time);
|
||||||
|
|
|
@ -529,6 +529,11 @@ struct tm* LOCALTIME(const time_t *clock, tm *result) {
|
||||||
#define TIMEGM(result) timegm(result)
|
#define TIMEGM(result) timegm(result)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern "C" CDECL void
|
||||||
|
rust_tzset() {
|
||||||
|
TZSET();
|
||||||
|
}
|
||||||
|
|
||||||
extern "C" CDECL void
|
extern "C" CDECL void
|
||||||
rust_gmtime(int64_t *sec, int32_t *nsec, rust_tm *timeptr) {
|
rust_gmtime(int64_t *sec, int32_t *nsec, rust_tm *timeptr) {
|
||||||
tm tm;
|
tm tm;
|
||||||
|
@ -541,7 +546,6 @@ rust_gmtime(int64_t *sec, int32_t *nsec, rust_tm *timeptr) {
|
||||||
extern "C" CDECL void
|
extern "C" CDECL void
|
||||||
rust_localtime(int64_t *sec, int32_t *nsec, rust_tm *timeptr) {
|
rust_localtime(int64_t *sec, int32_t *nsec, rust_tm *timeptr) {
|
||||||
tm tm;
|
tm tm;
|
||||||
TZSET();
|
|
||||||
time_t s = *sec;
|
time_t s = *sec;
|
||||||
LOCALTIME(&s, &tm);
|
LOCALTIME(&s, &tm);
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ debug_abi_2
|
||||||
get_port_id
|
get_port_id
|
||||||
get_task_id
|
get_task_id
|
||||||
get_time
|
get_time
|
||||||
|
rust_tzset
|
||||||
rust_gmtime
|
rust_gmtime
|
||||||
rust_localtime
|
rust_localtime
|
||||||
rust_timegm
|
rust_timegm
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue