From acb9ad8bfc04c2e352ddd6c80167b475012d355d Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 29 Dec 2021 13:39:39 -0500 Subject: simplify --- src/blocking/command.rs | 9 +++----- src/blocking/pty.rs | 6 ++---- src/command.rs | 9 +++----- src/error.rs | 57 ++++++------------------------------------------- src/lib.rs | 2 +- src/pty.rs | 9 +++----- 6 files changed, 18 insertions(+), 74 deletions(-) (limited to 'src') diff --git a/src/blocking/command.rs b/src/blocking/command.rs index 3de0f3e..cc3419a 100644 --- a/src/blocking/command.rs +++ b/src/blocking/command.rs @@ -99,11 +99,8 @@ impl Command { &mut self, pty: crate::blocking::Pty, ) -> crate::Result { - let (stdin, stdout, stderr, pre_exec) = crate::sys::setup_subprocess( - &pty, - pty.pts().map_err(crate::error::spawn)?, - ) - .map_err(crate::error::spawn)?; + let (stdin, stdout, stderr, pre_exec) = + crate::sys::setup_subprocess(&pty, pty.pts()?)?; self.inner.stdin(self.stdin.take().unwrap_or(stdin)); self.inner.stdout(self.stdout.take().unwrap_or(stdout)); @@ -114,7 +111,7 @@ impl Command { // async-signal-safe). unsafe { self.inner.pre_exec(pre_exec) }; - let child = self.inner.spawn().map_err(crate::error::spawn)?; + let child = self.inner.spawn()?; Ok(Child::new(child, pty)) } diff --git a/src/blocking/pty.rs b/src/blocking/pty.rs index 7900b50..0515838 100644 --- a/src/blocking/pty.rs +++ b/src/blocking/pty.rs @@ -5,14 +5,12 @@ pub struct Pty { impl Pty { pub fn new() -> crate::Result { - let (pt, ptsname) = - crate::sys::create_pt().map_err(crate::error::create_pty)?; + let (pt, ptsname) = crate::sys::create_pt()?; Ok(Self { pt, ptsname }) } pub fn resize(&self, size: crate::Size) -> crate::error::Result<()> { - crate::sys::set_term_size(self, size) - .map_err(crate::error::set_term_size) + Ok(crate::sys::set_term_size(self, size)?) } pub(crate) fn pts(&self) -> std::io::Result { diff --git a/src/command.rs b/src/command.rs index bbfc1e8..ef156aa 100644 --- a/src/command.rs +++ b/src/command.rs @@ -96,11 +96,8 @@ impl Command { } pub fn spawn(&mut self, pty: crate::Pty) -> crate::Result { - let (stdin, stdout, stderr, pre_exec) = crate::sys::setup_subprocess( - &pty, - pty.pts().map_err(crate::error::spawn)?, - ) - .map_err(crate::error::spawn)?; + let (stdin, stdout, stderr, pre_exec) = + crate::sys::setup_subprocess(&pty, pty.pts()?)?; self.inner.stdin(self.stdin.take().unwrap_or(stdin)); self.inner.stdout(self.stdout.take().unwrap_or(stdout)); @@ -111,7 +108,7 @@ impl Command { // async-signal-safe). unsafe { self.inner.pre_exec(pre_exec) }; - let child = self.inner.spawn().map_err(crate::error::spawn)?; + let child = self.inner.spawn()?; Ok(Child::new(child, pty)) } diff --git a/src/error.rs b/src/error.rs index 41ad4a2..57994df 100644 --- a/src/error.rs +++ b/src/error.rs @@ -1,13 +1,13 @@ /// Source for errors in this crate #[derive(Debug)] -pub enum Source { +pub enum Error { /// error came from std::io::Error Io(std::io::Error), /// error came from nix::Error Nix(nix::Error), } -impl std::fmt::Display for Source { +impl std::fmt::Display for Error { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::Io(e) => write!(f, "{}", e), @@ -16,71 +16,26 @@ impl std::fmt::Display for Source { } } -impl std::convert::From for Source { +impl std::convert::From for Error { fn from(e: std::io::Error) -> Self { Self::Io(e) } } -impl std::convert::From for Source { +impl std::convert::From for Error { fn from(e: nix::Error) -> Self { Self::Nix(e) } } -/// Error type for this crate -#[derive(Debug)] -pub enum Error { - /// error creating pty - CreatePty(Source), - - /// error setting terminal size - SetTermSize(Source), - - /// error spawning subprocess - Spawn(Source), -} - -impl std::fmt::Display for Error { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Self::CreatePty(e) => { - write!(f, "error creating pty: {}", e) - } - Self::SetTermSize(e) => { - write!(f, "error setting terminal size: {}", e) - } - Self::Spawn(e) => { - write!(f, "error spawning subprocess: {}", e) - } - } - } -} - impl std::error::Error for Error { fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { match self { - Self::CreatePty(e) | Self::SetTermSize(e) | Self::Spawn(e) => { - match e { - Source::Io(e) => Some(e), - Source::Nix(e) => Some(e), - } - } + Self::Io(e) => Some(e), + Self::Nix(e) => Some(e), } } } /// Convenience wrapper for `Result`s using [`Error`](Error) pub type Result = std::result::Result; - -pub fn create_pty>(source: S) -> Error { - Error::CreatePty(source.into()) -} - -pub fn set_term_size>(source: S) -> Error { - Error::SetTermSize(source.into()) -} - -pub fn spawn>(source: S) -> Error { - Error::Spawn(source.into()) -} diff --git a/src/lib.rs b/src/lib.rs index bdc01a0..3f7577f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,7 +12,7 @@ #![allow(clippy::type_complexity)] mod error; -pub use error::{Error, Result, Source}; +pub use error::{Error, Result}; mod types; pub use types::Size; diff --git a/src/pty.rs b/src/pty.rs index f01e014..5a6be77 100644 --- a/src/pty.rs +++ b/src/pty.rs @@ -5,16 +5,13 @@ pub struct Pty { impl Pty { pub fn new() -> crate::Result { - let (pt, ptsname) = - crate::sys::create_pt().map_err(crate::error::create_pty)?; - let pt = - async_io::Async::new(pt).map_err(crate::error::create_pty)?; + let (pt, ptsname) = crate::sys::create_pt()?; + let pt = async_io::Async::new(pt)?; Ok(Self { pt, ptsname }) } pub fn resize(&self, size: crate::Size) -> crate::error::Result<()> { - crate::sys::set_term_size(self, size) - .map_err(crate::error::set_term_size) + Ok(crate::sys::set_term_size(self, size)?) } pub(crate) fn pts(&self) -> std::io::Result { -- cgit v1.2.3-54-g00ecf