diff options
author | Ryan Zoeller <rtzoeller@rtzoeller.com> | 2021-10-19 23:51:55 -0500 |
---|---|---|
committer | Ryan Zoeller <rtzoeller@rtzoeller.com> | 2021-12-21 16:20:48 -0600 |
commit | 2eb6e88406f84e6800c4aa26e64fc3b2be8442eb (patch) | |
tree | e4dd675b0297e041a8c791a03f5cfef7137360c5 | |
parent | 4f7119c61da6ab3a11d5e52b5e6cf7105a66efb9 (diff) | |
download | nix-2eb6e88406f84e6800c4aa26e64fc3b2be8442eb.zip |
DragonFly 6.0 added fexecve(2)
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | Cargo.toml | 2 | ||||
-rw-r--r-- | src/unistd.rs | 4 | ||||
-rw-r--r-- | test/test_unistd.rs | 12 |
4 files changed, 8 insertions, 12 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index d935e28c..745f6a2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ This project adheres to [Semantic Versioning](https://semver.org/). ## [Unreleased] - ReleaseDate ### Added +- Added `fexecve` on DragonFly. + (#[1577](https://github.com/nix-rust/nix/pull/1577)) - Added fine-grained features flags. Most Nix functionality can now be conditionally enabled. By default, all features are enabled. (#[1611](https://github.com/nix-rust/nix/pull/1611)) @@ -27,7 +27,7 @@ targets = [ ] [dependencies] -libc = { version = "0.2.102", features = [ "extra_traits" ] } +libc = { version = "0.2.112", features = [ "extra_traits" ] } bitflags = "1.1" cfg-if = "1.0" diff --git a/src/unistd.rs b/src/unistd.rs index d48541f6..0e7f94e0 100644 --- a/src/unistd.rs +++ b/src/unistd.rs @@ -848,11 +848,9 @@ pub fn execvpe<SA: AsRef<CStr>, SE: AsRef<CStr>>(filename: &CStr, args: &[SA], e /// /// This function is similar to `execve`, except that the program to be executed /// is referenced as a file descriptor instead of a path. -// Note for NetBSD and OpenBSD: although rust-lang/libc includes it (under -// unix/bsd/netbsdlike/) fexecve is not currently implemented on NetBSD nor on -// OpenBSD. #[cfg(any(target_os = "android", target_os = "linux", + target_os = "dragonfly", target_os = "freebsd"))] #[inline] pub fn fexecve<SA: AsRef<CStr> ,SE: AsRef<CStr>>(fd: RawFd, args: &[SA], env: &[SE]) -> Result<Infallible> { diff --git a/test/test_unistd.rs b/test/test_unistd.rs index 61062ad2..59ab24e4 100644 --- a/test/test_unistd.rs +++ b/test/test_unistd.rs @@ -363,25 +363,21 @@ cfg_if!{ if #[cfg(target_os = "android")] { execve_test_factory!(test_execve, execve, CString::new("/system/bin/sh").unwrap().as_c_str()); execve_test_factory!(test_fexecve, fexecve, File::open("/system/bin/sh").unwrap().into_raw_fd()); - } else if #[cfg(any(target_os = "freebsd", + } else if #[cfg(any(target_os = "dragonfly", + target_os = "freebsd", target_os = "linux"))] { // These tests frequently fail on musl, probably due to // https://github.com/nix-rust/nix/issues/555 execve_test_factory!(test_execve, execve, CString::new("/bin/sh").unwrap().as_c_str()); execve_test_factory!(test_fexecve, fexecve, File::open("/bin/sh").unwrap().into_raw_fd()); - } else if #[cfg(any(target_os = "dragonfly", - target_os = "illumos", + } else if #[cfg(any(target_os = "illumos", target_os = "ios", target_os = "macos", target_os = "netbsd", target_os = "openbsd", target_os = "solaris"))] { execve_test_factory!(test_execve, execve, CString::new("/bin/sh").unwrap().as_c_str()); - // No fexecve() on DragonFly, ios, macos, NetBSD, OpenBSD. - // - // Note for NetBSD and OpenBSD: although rust-lang/libc includes it - // (under unix/bsd/netbsdlike/) fexecve is not currently implemented on - // NetBSD nor on OpenBSD. + // No fexecve() on ios, macos, NetBSD, OpenBSD. } } |