summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOssi Herrala <oherrala@iki.fi>2020-05-13 11:15:03 +0300
committerOssi Herrala <oherrala@iki.fi>2020-05-17 11:24:18 +0300
commit71aa2a6e9a51127d5bed8da38a69aa0894a5fa80 (patch)
tree8d8916b22cdfd41ae77c513b3628a648cb6b98a4
parent2f78ec2bba5bbeac2c666745da1423b8c326f61a (diff)
downloadnix-71aa2a6e9a51127d5bed8da38a69aa0894a5fa80.zip
Replace void crate with Rust standard lib Infallible type
std::convert::Infallible has been available since Rust 1.34 and nix currently targets Rust 1.36 or later so this should not cause problems. Fixes #1238
-rw-r--r--CHANGELOG.md2
-rw-r--r--Cargo.toml1
-rw-r--r--src/lib.rs1
-rw-r--r--src/sys/reboot.rs4
-rw-r--r--src/unistd.rs14
5 files changed, 11 insertions, 11 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d5c6d4d6..ad8aeb2a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -36,6 +36,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
(#[1198](https://github.com/nix-rust/nix/pull/1198))
- On Linux, `ptrace::write` is now an `unsafe` function. Caveat programmer.
(#[1245](https://github.com/nix-rust/nix/pull/1245))
+- `execv`, `execve`, `execvp` and `execveat` in `::nix::unistd` and `reboot` in
+ `::nix::sys::reboot` now return `Result<Infallible>` instead of `Result<Void>` (#[1239](https://github.com/nix-rust/nix/pull/1239))
### Fixed
diff --git a/Cargo.toml b/Cargo.toml
index 1277fbc4..68407025 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -19,7 +19,6 @@ exclude = [
libc = { git = "https://github.com/rust-lang/libc/", features = [ "extra_traits" ] }
bitflags = "1.1"
cfg-if = "0.1.10"
-void = "1.0.2"
[target.'cfg(target_os = "dragonfly")'.build-dependencies]
cc = "1"
diff --git a/src/lib.rs b/src/lib.rs
index 51751f9e..7fd7ecb5 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -20,7 +20,6 @@
extern crate bitflags;
#[macro_use]
extern crate cfg_if;
-extern crate void;
// Re-exported external crates
pub extern crate libc;
diff --git a/src/sys/reboot.rs b/src/sys/reboot.rs
index bafa8fc1..d18b44d6 100644
--- a/src/sys/reboot.rs
+++ b/src/sys/reboot.rs
@@ -3,7 +3,7 @@
use {Error, Result};
use errno::Errno;
use libc;
-use void::Void;
+use std::convert::Infallible;
use std::mem::drop;
libc_enum! {
@@ -22,7 +22,7 @@ libc_enum! {
}
}
-pub fn reboot(how: RebootMode) -> Result<Void> {
+pub fn reboot(how: RebootMode) -> Result<Infallible> {
unsafe {
libc::reboot(how as libc::c_int)
};
diff --git a/src/unistd.rs b/src/unistd.rs
index fff103c0..3589cb72 100644
--- a/src/unistd.rs
+++ b/src/unistd.rs
@@ -7,11 +7,11 @@ use fcntl::FcntlArg::F_SETFD;
use libc::{self, c_char, c_void, c_int, c_long, c_uint, size_t, pid_t, off_t,
uid_t, gid_t, mode_t, PATH_MAX};
use std::{fmt, mem, ptr};
+use std::convert::Infallible;
use std::ffi::{CString, CStr, OsString, OsStr};
use std::os::unix::ffi::{OsStringExt, OsStrExt};
use std::os::unix::io::RawFd;
use std::path::PathBuf;
-use void::Void;
use sys::stat::Mode;
#[cfg(any(target_os = "android", target_os = "linux"))]
@@ -707,7 +707,7 @@ fn to_exec_array(args: &[&CStr]) -> Vec<*const c_char> {
/// performs the same action but does not allow for customization of the
/// environment for the new process.
#[inline]
-pub fn execv(path: &CStr, argv: &[&CStr]) -> Result<Void> {
+pub fn execv(path: &CStr, argv: &[&CStr]) -> Result<Infallible> {
let args_p = to_exec_array(argv);
unsafe {
@@ -731,7 +731,7 @@ pub fn execv(path: &CStr, argv: &[&CStr]) -> Result<Void> {
/// in the `args` list is an argument to the new process. Each element in the
/// `env` list should be a string in the form "key=value".
#[inline]
-pub fn execve(path: &CStr, args: &[&CStr], env: &[&CStr]) -> Result<Void> {
+pub fn execve(path: &CStr, args: &[&CStr], env: &[&CStr]) -> Result<Infallible> {
let args_p = to_exec_array(args);
let env_p = to_exec_array(env);
@@ -752,7 +752,7 @@ pub fn execve(path: &CStr, args: &[&CStr], env: &[&CStr]) -> Result<Void> {
/// would not work if "bash" was specified for the path argument, but `execvp`
/// would assuming that a bash executable was on the system `PATH`.
#[inline]
-pub fn execvp(filename: &CStr, args: &[&CStr]) -> Result<Void> {
+pub fn execvp(filename: &CStr, args: &[&CStr]) -> Result<Infallible> {
let args_p = to_exec_array(args);
unsafe {
@@ -772,7 +772,7 @@ pub fn execvp(filename: &CStr, args: &[&CStr]) -> Result<Void> {
#[cfg(any(target_os = "haiku",
target_os = "linux",
target_os = "openbsd"))]
-pub fn execvpe(filename: &CStr, args: &[&CStr], env: &[&CStr]) -> Result<Void> {
+pub fn execvpe(filename: &CStr, args: &[&CStr], env: &[&CStr]) -> Result<Infallible> {
let args_p = to_exec_array(args);
let env_p = to_exec_array(env);
@@ -800,7 +800,7 @@ pub fn execvpe(filename: &CStr, args: &[&CStr], env: &[&CStr]) -> Result<Void> {
target_os = "linux",
target_os = "freebsd"))]
#[inline]
-pub fn fexecve(fd: RawFd, args: &[&CStr], env: &[&CStr]) -> Result<Void> {
+pub fn fexecve(fd: RawFd, args: &[&CStr], env: &[&CStr]) -> Result<Infallible> {
let args_p = to_exec_array(args);
let env_p = to_exec_array(env);
@@ -824,7 +824,7 @@ pub fn fexecve(fd: RawFd, args: &[&CStr], env: &[&CStr]) -> Result<Void> {
#[cfg(any(target_os = "android", target_os = "linux"))]
#[inline]
pub fn execveat(dirfd: RawFd, pathname: &CStr, args: &[&CStr],
- env: &[&CStr], flags: super::fcntl::AtFlags) -> Result<Void> {
+ env: &[&CStr], flags: super::fcntl::AtFlags) -> Result<Infallible> {
let args_p = to_exec_array(args);
let env_p = to_exec_array(env);