wasmer_wasix/syscalls/journal/actions/
fd_dup.rs

1use 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}