diff options
| author | Daniel Farina <daniel@fdr.io> | 2013-05-27 09:52:56 -0700 |
|---|---|---|
| committer | Daniel Farina <daniel@fdr.io> | 2013-05-27 10:02:48 -0700 |
| commit | 379460558b2dfd7ddbd0b29abfaa2642d9f0961e (patch) | |
| tree | c7ee77aced192dff18c0f2676d784f0e5cfe2372 /src | |
| parent | 3941f78a1bfb3ecf077dd782e5d03ea7fafcad86 (diff) | |
| download | rust-379460558b2dfd7ddbd0b29abfaa2642d9f0961e.tar.gz rust-379460558b2dfd7ddbd0b29abfaa2642d9f0961e.zip | |
Use passing by-value in gmtime, mktime
Per the recommendation of the now-removed FIXME.
Diffstat (limited to 'src')
| -rw-r--r-- | src/libextra/time.rs | 17 | ||||
| -rw-r--r-- | src/rt/rust_builtin.cpp | 12 |
2 files changed, 14 insertions, 15 deletions
diff --git a/src/libextra/time.rs b/src/libextra/time.rs index 8a0d50ed52c..2b43291c28a 100644 --- a/src/libextra/time.rs +++ b/src/libextra/time.rs @@ -22,11 +22,11 @@ pub mod rustrt { pub unsafe fn precise_time_ns(ns: &mut u64); pub unsafe fn rust_tzset(); - // FIXME: The i64 values can be passed by-val when #2064 is fixed. + pub unsafe fn rust_gmtime(sec: i64, nsec: i32, result: &mut Tm); pub unsafe fn rust_localtime(sec: i64, nsec: i32, result: &mut Tm); - pub unsafe fn rust_timegm(tm: &Tm, sec: &mut i64); - pub unsafe fn rust_mktime(tm: &Tm, sec: &mut i64); + pub unsafe fn rust_timegm(tm: &Tm) -> i64; + pub unsafe fn rust_mktime(tm: &Tm) -> i64; } } @@ -177,12 +177,11 @@ pub impl Tm { /// Convert time to the seconds from January 1, 1970 fn to_timespec(&self) -> Timespec { unsafe { - let mut sec = 0i64; - if self.tm_gmtoff == 0_i32 { - rustrt::rust_timegm(self, &mut sec); - } else { - rustrt::rust_mktime(self, &mut sec); - } + let sec = match self.tm_gmtoff { + 0_i32 => rustrt::rust_timegm(self), + _ => rustrt::rust_mktime(self) + }; + Timespec::new(sec, self.tm_nsec) } } diff --git a/src/rt/rust_builtin.cpp b/src/rt/rust_builtin.cpp index a2f253550af..b0a46d2ac29 100644 --- a/src/rt/rust_builtin.cpp +++ b/src/rt/rust_builtin.cpp @@ -459,18 +459,18 @@ rust_localtime(int64_t sec, int32_t nsec, rust_tm *timeptr) { tm_to_rust_tm(&tm, timeptr, gmtoff, zone, nsec); } -extern "C" CDECL void -rust_timegm(rust_tm* timeptr, int64_t *out) { +extern "C" CDECL int64_t +rust_timegm(rust_tm* timeptr) { tm t; rust_tm_to_tm(timeptr, &t); - *out = TIMEGM(&t); + return TIMEGM(&t); } -extern "C" CDECL void -rust_mktime(rust_tm* timeptr, int64_t *out) { +extern "C" CDECL int64_t +rust_mktime(rust_tm* timeptr) { tm t; rust_tm_to_tm(timeptr, &t); - *out = mktime(&t); + return mktime(&t); } extern "C" CDECL rust_sched_id |
