chiark / gitweb /
Use .into_raw_fd for null_fd for compatibility with nix 30
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 28 Sep 2025 10:01:49 +0000 (11:01 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 28 Sep 2025 10:06:48 +0000 (11:06 +0100)
In nix <=29, open returns RawFd for which .into_raw_fd is a no-op.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
server/daemon.rs

index 944d8dcca8c526cef08c22f2ae280bf743a1a2dc..e3018fa848e10b491524887ea2741eb5d2567650 100644 (file)
@@ -6,7 +6,8 @@ use std::convert::TryInto;
 use std::ffi::CStr;
 use std::io::IoSlice;
 use std::os::raw::{c_char, c_int};
-use std::os::unix::io::RawFd;
+use std::os::unix::io::RawFd; // TODO io-safety, MSRV>=1.66, maybe nix>=1.30
+use std::os::fd::IntoRawFd; // TODO io-safety maybe remove
 use std::slice;
 use std::str;
 use std::thread::panicking;
@@ -151,7 +152,8 @@ impl Daemoniser {
   pub fn phase1() -> Self {
     unsafe {
       let null_fd = open(cstr!(b"/dev/null\0"), OFlag::O_RDWR, Mode::empty())
-        .context("open /dev/null");
+        .context("open /dev/null")
+        .into_raw_fd();
       mdup2(null_fd, 0, "null onto stdin");
 
       let (st_rfd, st_wfd) = compat::pipe().context("pipe");