summaryrefslogtreecommitdiffstats
path: root/crates/runner/src/util/unix.rs
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2023-09-30 23:01:17 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2023-09-30 23:01:17 +0200
commita0ab26a7677eed4698f9728e42a13c760fa85e7c (patch)
tree139cd6a2297b07c14f851be6341713c673f40f9c /crates/runner/src/util/unix.rs
parentbbc7bd79393de9f284fa4f50905936dc8cb2aaa0 (diff)
downloadrebel-a0ab26a7677eed4698f9728e42a13c760fa85e7c.tar
rebel-a0ab26a7677eed4698f9728e42a13c760fa85e7c.zip
runner: jobserver: use OwnedFds
Diffstat (limited to 'crates/runner/src/util/unix.rs')
-rw-r--r--crates/runner/src/util/unix.rs19
1 files changed, 12 insertions, 7 deletions
diff --git a/crates/runner/src/util/unix.rs b/crates/runner/src/util/unix.rs
index c3e9ddb..156e441 100644
--- a/crates/runner/src/util/unix.rs
+++ b/crates/runner/src/util/unix.rs
@@ -10,9 +10,11 @@ use common::error::*;
use super::fs;
-pub fn set_blocking(fd: RawFd, blocking: bool) -> Result<()> {
+pub fn set_blocking<Fd: AsFd>(fd: &Fd, blocking: bool) -> Result<()> {
+ let raw_fd = fd.as_fd().as_raw_fd();
+
let flags =
- OFlag::from_bits_retain(fcntl::fcntl(fd, FcntlArg::F_GETFL).context("fcntl(F_GETFL)")?);
+ OFlag::from_bits_retain(fcntl::fcntl(raw_fd, FcntlArg::F_GETFL).context("fcntl(F_GETFL)")?);
let new_flags = if blocking {
flags & !OFlag::O_NONBLOCK
@@ -21,15 +23,18 @@ pub fn set_blocking(fd: RawFd, blocking: bool) -> Result<()> {
};
if new_flags != flags {
- fcntl::fcntl(fd, FcntlArg::F_SETFL(new_flags)).context("fcntl(F_SETFL)")?;
+ fcntl::fcntl(raw_fd, FcntlArg::F_SETFL(new_flags)).context("fcntl(F_SETFL)")?;
}
Ok(())
}
-pub fn set_cloexec(fd: RawFd, cloexec: bool) -> Result<()> {
- let flags =
- FdFlag::from_bits_retain(fcntl::fcntl(fd, FcntlArg::F_GETFD).context("fcntl(F_GETFD)")?);
+pub fn set_cloexec<Fd: AsFd>(fd: &Fd, cloexec: bool) -> Result<()> {
+ let raw_fd = fd.as_fd().as_raw_fd();
+
+ let flags = FdFlag::from_bits_retain(
+ fcntl::fcntl(raw_fd, FcntlArg::F_GETFD).context("fcntl(F_GETFD)")?,
+ );
let new_flags = if cloexec {
flags | FdFlag::FD_CLOEXEC
@@ -38,7 +43,7 @@ pub fn set_cloexec(fd: RawFd, cloexec: bool) -> Result<()> {
};
if new_flags != flags {
- fcntl::fcntl(fd, FcntlArg::F_SETFD(new_flags)).context("fcntl(F_SETFD)")?;
+ fcntl::fcntl(raw_fd, FcntlArg::F_SETFD(new_flags)).context("fcntl(F_SETFD)")?;
}
Ok(())