diff --git a/Cargo.lock b/Cargo.lock index 83c1cc8f715..22574e2a1f6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3721,6 +3721,7 @@ version = "0.8.0" dependencies = [ "clap", "fluent", + "rustix", "thiserror 2.0.18", "uucore", ] diff --git a/src/uu/ln/Cargo.toml b/src/uu/ln/Cargo.toml index 6527ee89a2b..6b4401e3a9d 100644 --- a/src/uu/ln/Cargo.toml +++ b/src/uu/ln/Cargo.toml @@ -20,6 +20,7 @@ path = "src/ln.rs" [dependencies] clap = { workspace = true } +rustix = { workspace = true, features = ["fs"] } uucore = { workspace = true, features = ["backup-control", "fs"] } thiserror = { workspace = true } fluent = { workspace = true } diff --git a/src/uu/ln/src/ln.rs b/src/uu/ln/src/ln.rs index 5fb75a86730..e67bd6f42f3 100644 --- a/src/uu/ln/src/ln.rs +++ b/src/uu/ln/src/ln.rs @@ -19,6 +19,8 @@ use std::ffi::OsString; use std::fs; use thiserror::Error; +#[cfg(target_os = "wasi")] +use std::io; #[cfg(any(unix, target_os = "redox"))] use std::os::unix::fs::symlink; #[cfg(windows)] @@ -490,9 +492,6 @@ pub fn symlink, P2: AsRef>(src: P1, dst: P2) -> std::io::R } #[cfg(target_os = "wasi")] -fn symlink, P2: AsRef>(_src: P1, _dst: P2) -> std::io::Result<()> { - Err(std::io::Error::new( - std::io::ErrorKind::Unsupported, - "symlinks not supported on this platform", - )) +pub fn symlink, P2: AsRef>(src: P1, dst: P2) -> io::Result<()> { + rustix::fs::symlink(src.as_ref(), dst.as_ref()).map_err(io::Error::from) }