mirror of
https://github.com/fluencelabs/wasmer
synced 2025-06-24 14:11:32 +00:00
Trying to fix timegm
This commit is contained in:
@ -4,7 +4,9 @@ use std::mem;
|
||||
use std::time::SystemTime;
|
||||
|
||||
#[cfg(not(target_os = "windows"))]
|
||||
use libc::{clockid_t, time as libc_time, timegm as libc_timegm};
|
||||
use libc::{clockid_t, time as libc_time, timegm as libc_timegm, tm as libc_tm};
|
||||
#[cfg(not(target_os = "windows"))]
|
||||
use std::ffi::CString;
|
||||
|
||||
#[cfg(target_os = "windows")]
|
||||
use libc::time_t;
|
||||
@ -305,15 +307,45 @@ pub fn _timegm(ctx: &mut Ctx, time_ptr: c_int) -> i32 {
|
||||
|
||||
unsafe {
|
||||
let time_p_addr = emscripten_memory_pointer!(ctx.memory(0), time_ptr) as *mut guest_tm;
|
||||
libc_timegm(time_p_addr as _) as i32 // TODO review i64
|
||||
|
||||
let x: *mut c_char = CString::new("").expect("CString::new failed").into_raw();
|
||||
let mut rust_tm = libc_tm {
|
||||
tm_sec: 0,
|
||||
tm_min: 0,
|
||||
tm_hour: 0,
|
||||
tm_mday: 0,
|
||||
tm_mon: 0,
|
||||
tm_year: 0,
|
||||
tm_wday: 0,
|
||||
tm_yday: 0,
|
||||
tm_isdst: 0,
|
||||
tm_gmtoff: 0,
|
||||
tm_zone: x,
|
||||
};
|
||||
|
||||
let result = libc_timegm(&mut rust_tm) as i32;
|
||||
if result != 0 {
|
||||
(*time_p_addr).tm_sec = rust_tm.tm_sec;
|
||||
(*time_p_addr).tm_min = rust_tm.tm_min;
|
||||
(*time_p_addr).tm_hour = rust_tm.tm_hour;
|
||||
(*time_p_addr).tm_mday = rust_tm.tm_mday;
|
||||
(*time_p_addr).tm_mon = rust_tm.tm_mon;
|
||||
(*time_p_addr).tm_year = rust_tm.tm_year;
|
||||
(*time_p_addr).tm_wday = rust_tm.tm_wday;
|
||||
(*time_p_addr).tm_yday = rust_tm.tm_yday;
|
||||
(*time_p_addr).tm_isdst = rust_tm.tm_isdst;
|
||||
(*time_p_addr).tm_gmtoff = rust_tm.tm_gmtoff as _;
|
||||
(*time_p_addr).tm_zone = 0;
|
||||
}
|
||||
result
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "windows")]
|
||||
pub fn _timegm(ctx: &mut Ctx, time_ptr: c_int) -> i32 {
|
||||
pub fn _timegm(_ctx: &mut Ctx, _time_ptr: c_int) -> i32 {
|
||||
debug!(
|
||||
"emscripten::_timegm - UNIMPLEMENTED IN WINDOWS {}",
|
||||
time_ptr
|
||||
_time_ptr
|
||||
);
|
||||
-1
|
||||
}
|
||||
|
Reference in New Issue
Block a user