From 7e037c9d4e2013810340597d7bbf34bfab06882c Mon Sep 17 00:00:00 2001 From: Mark Poliakov Date: Thu, 2 Jan 2025 20:06:03 +0200 Subject: [PATCH] alnyan/yggdrasil: symlink creation --- library/std/src/os/yggdrasil/fs.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/library/std/src/os/yggdrasil/fs.rs b/library/std/src/os/yggdrasil/fs.rs index 4eca812c152..3702d7975c7 100644 --- a/library/std/src/os/yggdrasil/fs.rs +++ b/library/std/src/os/yggdrasil/fs.rs @@ -1,8 +1,12 @@ #![unstable(feature = "yggdrasil_os", issue = "none")] use yggdrasil_rt::io::FileMode; +use yggdrasil_rt::sys as syscall; use crate::fs::{Metadata, OpenOptions}; +use crate::io; +use crate::path::Path; +use crate::sys::cvt_io; use crate::sys_common::{AsInner, AsInnerMut}; #[unstable(feature = "yggdrasil_os", issue = "none")] @@ -42,3 +46,11 @@ impl OpenOptionsExt for OpenOptions { self } } + +#[unstable(feature = "yggdrasil_os", issue = "none")] +pub fn symlink, Q: AsRef>(target: P, path: Q) -> Result<(), io::Error> { + let target = target.as_ref().to_str().unwrap(); + let path = path.as_ref().to_str().unwrap(); + + cvt_io(unsafe { syscall::create_symlink(None, target, path) }) +}