(fd: i32, vm: &VirtualMachine)
| 2115 | |
| 2116 | #[pyfunction] |
| 2117 | fn dup(fd: i32, vm: &VirtualMachine) -> PyResult<i32> { |
| 2118 | let fd2 = unsafe { suppress_iph!(libc::dup(fd)) }; |
| 2119 | if fd2 < 0 { |
| 2120 | return Err(vm.new_last_errno_error()); |
| 2121 | } |
| 2122 | let borrowed = unsafe { crt_fd::Borrowed::borrow_raw(fd2) }; |
| 2123 | let handle = crt_fd::as_handle(borrowed).map_err(|e| close_fd_and_raise(fd2, e, vm))?; |
| 2124 | raw_set_handle_inheritable(handle.as_raw_handle() as _, false) |
| 2125 | .map_err(|e| close_fd_and_raise(fd2, e, vm))?; |
| 2126 | Ok(fd2) |
| 2127 | } |
| 2128 | |
| 2129 | #[derive(FromArgs)] |
| 2130 | struct Dup2Args { |
no test coverage detected