wasmer_wasix/syscalls/journal/actions/
fd_dup.rs1use super::*;
2
3impl JournalSyscallPlayer<'_, '_> {
4 #[allow(clippy::result_large_err)]
5 pub(crate) unsafe fn action_fd_dup(
6 &mut self,
7 original_fd: u32,
8 copied_fd: u32,
9 cloexec: bool,
10 ) -> Result<(), WasiRuntimeError> {
11 tracing::trace!(%original_fd, %copied_fd, "Replay journal - FdDuplicate");
12 self.real_fd.insert(copied_fd);
13 if original_fd != copied_fd {
14 self.stdout_fds.remove(&copied_fd);
15 self.stderr_fds.remove(&copied_fd);
16 }
17 if self.stdout_fds.contains(&original_fd) {
18 self.stdout_fds.insert(copied_fd);
19 }
20 if self.stderr_fds.contains(&original_fd) {
21 self.stderr_fds.insert(copied_fd);
22 }
23 JournalEffector::apply_fd_duplicate(&mut self.ctx, original_fd, copied_fd, cloexec)
24 .map_err(anyhow_err_to_runtime_err)?;
25 Ok(())
26 }
27}