Implement fd_filestat_get for all platforms (#42)

* Implement fd_filestat_get for all platforms

* Remove an old comment

* Remove panics from the syscall wrappers

* Return WASI error type

* Reuse Metadata if possible to save syscalls.

* Refactor the change for two separate fd_filestat_get_impl

* Refactor error handling
This commit is contained in:
Marcin Mielniczuk
2019-07-26 19:15:29 +02:00
committed by Jakub Konka
parent e759e3c2a4
commit 89fbde2c3f
7 changed files with 189 additions and 17 deletions

10
src/helpers.rs Normal file
View File

@@ -0,0 +1,10 @@
use crate::{host, Result};
use std::convert::TryInto;
use std::time::{SystemTime, UNIX_EPOCH};
pub(crate) fn systemtime_to_timestamp(st: SystemTime) -> Result<u64> {
st.duration_since(UNIX_EPOCH)
.map_err(|_| host::__WASI_EINVAL)? // date earlier than UNIX_EPOCH
.as_nanos()
.try_into()
.map_err(|_| host::__WASI_EOVERFLOW) // u128 doesn't fit into u64
}