switch to cap-fs-ext::MetadataExt
This commit is contained in:
37
Cargo.lock
generated
37
Cargo.lock
generated
@@ -206,26 +206,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"
|
checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cap-primitives"
|
name = "cap-fs-ext"
|
||||||
version = "0.6.0"
|
version = "0.7.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f9069ed88e23a3fff56577518a238e6975920620cd5d00be8ca73aa46a96d5f5"
|
checksum = "724c2735539ad3ab51f04a0d84bca8c23398e558e810254a6996867fd6c7db81"
|
||||||
|
dependencies = [
|
||||||
|
"cap-primitives",
|
||||||
|
"cap-std",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cap-primitives"
|
||||||
|
version = "0.7.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1b599a2508a28113d658c2f94f3d294d8023c3b34adb89204d7744ddbeb22a59"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"errno",
|
"errno",
|
||||||
"fs-set-times",
|
"fs-set-times",
|
||||||
"ipnet",
|
"ipnet",
|
||||||
"libc",
|
"libc",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"posish 0.4.1",
|
"posish 0.5.2",
|
||||||
"winapi",
|
"winapi",
|
||||||
"winx 0.20.0",
|
"winx 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cap-std"
|
name = "cap-std"
|
||||||
version = "0.6.0"
|
version = "0.7.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "eacf34fea6948253011b8771b7ae6258a2ae15c7ba38e78b7dd60a785af354d2"
|
checksum = "0760daa4e6270daa9c5c6ad133108fb77edfe023a019c392d98dd769defa42d5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cap-primitives",
|
"cap-primitives",
|
||||||
]
|
]
|
||||||
@@ -2367,12 +2377,12 @@ name = "wasi-c2"
|
|||||||
version = "0.21.0"
|
version = "0.21.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
"cap-fs-ext",
|
||||||
"cap-std",
|
"cap-std",
|
||||||
"cfg-if 1.0.0",
|
"cfg-if 1.0.0",
|
||||||
"fs-set-times",
|
"fs-set-times",
|
||||||
"getrandom 0.2.0",
|
"getrandom 0.2.0",
|
||||||
"libc",
|
"libc",
|
||||||
"rustc_version",
|
|
||||||
"system-interface",
|
"system-interface",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"tracing",
|
"tracing",
|
||||||
@@ -2906,17 +2916,6 @@ version = "0.4.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "winx"
|
|
||||||
version = "0.20.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b25e4ae373f2f2f7f5f187974ed315719ce74160859027c80deb1f68b3c0c966"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags",
|
|
||||||
"cvt",
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winx"
|
name = "winx"
|
||||||
version = "0.21.0"
|
version = "0.21.0"
|
||||||
|
|||||||
@@ -21,13 +21,11 @@ getrandom = { version = "0.2.0", features = ["std"] }
|
|||||||
wiggle = { path = "../wiggle", default-features = false, version = "0.21.0" }
|
wiggle = { path = "../wiggle", default-features = false, version = "0.21.0" }
|
||||||
tracing = "0.1.19"
|
tracing = "0.1.19"
|
||||||
system-interface = "0.2"
|
system-interface = "0.2"
|
||||||
cap-std = "0.6"
|
cap-std = "0.7"
|
||||||
|
cap-fs-ext = "0.7"
|
||||||
fs-set-times = "0.2.1"
|
fs-set-times = "0.2.1"
|
||||||
cfg-if = "1"
|
cfg-if = "1"
|
||||||
|
|
||||||
[build-dependencies]
|
|
||||||
rustc_version = "0.2"
|
|
||||||
|
|
||||||
[badges]
|
[badges]
|
||||||
maintenance = { status = "actively-developed" }
|
maintenance = { status = "actively-developed" }
|
||||||
|
|
||||||
|
|||||||
@@ -5,14 +5,4 @@ fn main() {
|
|||||||
let wasi = cwd.join("..").join("wasi-common").join("WASI");
|
let wasi = cwd.join("..").join("wasi-common").join("WASI");
|
||||||
println!("cargo:wasi={}", wasi.display());
|
println!("cargo:wasi={}", wasi.display());
|
||||||
println!("cargo:rustc-env=WASI_ROOT={}", wasi.display());
|
println!("cargo:rustc-env=WASI_ROOT={}", wasi.display());
|
||||||
|
|
||||||
match rustc_version::version_meta()
|
|
||||||
.expect("query rustc release channel")
|
|
||||||
.channel
|
|
||||||
{
|
|
||||||
rustc_version::Channel::Nightly => {
|
|
||||||
println!("cargo:rustc-cfg=nightly");
|
|
||||||
}
|
|
||||||
_ => {}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -177,14 +177,16 @@ impl WasiFile for cap_std::fs::File {
|
|||||||
if meta.is_file() {
|
if meta.is_file() {
|
||||||
Ok(Filetype::RegularFile)
|
Ok(Filetype::RegularFile)
|
||||||
} else {
|
} else {
|
||||||
Err(Error::Badf) // XXX idk what to do here
|
todo!("get_filetype doesnt know how to handle case when not a file");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn get_fdflags(&self) -> Result<FdFlags, Error> {
|
fn get_fdflags(&self) -> Result<FdFlags, Error> {
|
||||||
// XXX cap-std doesnt expose append, dsync, nonblock, rsync, sync
|
// XXX cap-std doesnt expose append, dsync, nonblock, rsync, sync
|
||||||
todo!()
|
todo!("get_fdflags is not implemented")
|
||||||
}
|
}
|
||||||
fn get_oflags(&self) -> Result<OFlags, Error> {
|
fn get_oflags(&self) -> Result<OFlags, Error> {
|
||||||
|
#![allow(unreachable_code, unused_variables)]
|
||||||
|
todo!("get_oflags implementation is incomplete");
|
||||||
// XXX what if it was opened append, async, nonblock...
|
// XXX what if it was opened append, async, nonblock...
|
||||||
let perms = self.metadata()?.permissions();
|
let perms = self.metadata()?.permissions();
|
||||||
if perms.readonly() {
|
if perms.readonly() {
|
||||||
@@ -210,27 +212,12 @@ impl WasiFile for cap_std::fs::File {
|
|||||||
}
|
}
|
||||||
fn get_filestat(&self) -> Result<Filestat, Error> {
|
fn get_filestat(&self) -> Result<Filestat, Error> {
|
||||||
let meta = self.metadata()?;
|
let meta = self.metadata()?;
|
||||||
let (device_id, inode, nlink) = {
|
use cap_fs_ext::MetadataExt;
|
||||||
cfg_if! {
|
|
||||||
if #[cfg(unix)] {
|
|
||||||
use std::os::unix::fs::MetadataExt;
|
|
||||||
(meta.dev(), meta.ino(), meta.nlink())
|
|
||||||
} else if #[cfg(all(windows, feature = "nightly"))] {
|
|
||||||
use std::os::windows::fs::MetadataExt;
|
|
||||||
( meta.volume_serial_number().unwrap_or(-1),
|
|
||||||
meta.file_index().unwrap_or(-1),
|
|
||||||
meta.number_of_links().unwrap_or(0),
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
(-1, -1, 0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Ok(Filestat {
|
Ok(Filestat {
|
||||||
device_id,
|
device_id: meta.dev(),
|
||||||
inode,
|
inode: meta.ino(),
|
||||||
filetype: self.get_filetype()?,
|
filetype: self.get_filetype()?,
|
||||||
nlink,
|
nlink: meta.nlink(),
|
||||||
size: meta.len(),
|
size: meta.len(),
|
||||||
atim: meta.accessed()?.into_std(),
|
atim: meta.accessed()?.into_std(),
|
||||||
mtim: meta.modified()?.into_std(),
|
mtim: meta.modified()?.into_std(),
|
||||||
|
|||||||
Reference in New Issue
Block a user