]> git.lizzy.rs Git - rust.git/blobdiff - src/libstd/sys/unix/process/process_unix.rs
use exhaustive_patterns to be able to use `?`
[rust.git] / src / libstd / sys / unix / process / process_unix.rs
index 07f813315e8c12757209b32e78602f3cab59c977..80fe763aecc888266398d400e8ce0feb87895349 100644 (file)
@@ -47,7 +47,7 @@ pub fn spawn(&mut self, default: Stdio, needs_stdin: bool)
             match result {
                 0 => {
                     drop(input);
-                    let err = self.do_exec(theirs, envp.as_ref());
+                    let Err(err) = self.do_exec(theirs, envp.as_ref());
                     let errno = err.raw_os_error().unwrap_or(libc::EINVAL) as u32;
                     let bytes = [
                         (errno >> 24) as u8,
@@ -123,7 +123,8 @@ pub fn exec(&mut self, default: Stdio) -> io::Error {
                     // environment lock before we try to exec.
                     let _lock = sys::os::env_lock();
 
-                    self.do_exec(theirs, envp.as_ref())
+                    let Err(e) = self.do_exec(theirs, envp.as_ref());
+                    e
                 }
             }
             Err(e) => e,
@@ -164,7 +165,7 @@ unsafe fn do_exec(
         &mut self,
         stdio: ChildPipes,
         maybe_envp: Option<&CStringArray>
-    ) -> io::Error {
+    ) -> Result<!, io::Error> {
         use crate::sys::{self, cvt_r};
 
         if let Some(fd) = stdio.stdin.fd() {
@@ -224,7 +225,7 @@ unsafe fn do_exec(
                                          ptr::null_mut()))?;
             let ret = sys::signal(libc::SIGPIPE, libc::SIG_DFL);
             if ret == libc::SIG_ERR {
-                return io::Error::last_os_error()
+                return Err(io::Error::last_os_error())
             }
         }
 
@@ -254,7 +255,7 @@ fn drop(&mut self) {
         }
 
         libc::execvp(self.get_argv()[0], self.get_argv().as_ptr());
-        io::Error::last_os_error()
+        Err(io::Error::last_os_error())
     }
 
     #[cfg(not(any(target_os = "macos", target_os = "freebsd",