diff --git a/crates/nit/src/system/mod.rs b/crates/nit/src/system/mod.rs index d85ca1c..33bc555 100644 --- a/crates/nit/src/system/mod.rs +++ b/crates/nit/src/system/mod.rs @@ -81,7 +81,10 @@ impl Mount { "Making directory: {target}", target = self.target.display() )); - syscall::mkdir(&self.target)?; + std::fs::create_dir_all(&self.target).context(format_args!( + "could not create directory: {target}", + target = self.target.display() + ))?; } dmesg(format!( diff --git a/crates/nit/src/system/syscall.rs b/crates/nit/src/system/syscall.rs index 74cc0d9..72dc32d 100644 --- a/crates/nit/src/system/syscall.rs +++ b/crates/nit/src/system/syscall.rs @@ -89,21 +89,6 @@ pub fn mount( } } -pub fn mkdir(path: impl AsRef) -> Result<()> { - let path = path.as_ref(); - let path_cs = CString::new(path.as_os_str().as_encoded_bytes()) - .context(format_args!("bad path: {path}", path = path.display()))?; - - match unsafe { libc::mkdir(path_cs.as_ptr(), 0o755) } { - 0 => Ok(()), - -1 => ctx_os_error(format_args!( - "error calling mkdir({path}, 0o755)", - path = path.display() - )), - n => unreachable!("mount() syscall returned bad value: {n}"), - } -} - pub fn freopen(path: impl AsRef, mode: impl AsRef, fd: &impl AsRawFd) -> Result<()> { let path = path.as_ref(); let mode = mode.as_ref();