aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2021-12-29 13:39:39 -0500
committerJesse Luehrs <doy@tozt.net>2021-12-29 13:39:39 -0500
commitacb9ad8bfc04c2e352ddd6c80167b475012d355d (patch)
tree69de70c749e0ae382b73094ed087a2d3d259c890 /src
parent3b550f5d3dad77a56455352579fae3071b42e86d (diff)
downloadpty-process-acb9ad8bfc04c2e352ddd6c80167b475012d355d.tar.gz
pty-process-acb9ad8bfc04c2e352ddd6c80167b475012d355d.zip
simplify
Diffstat (limited to 'src')
-rw-r--r--src/blocking/command.rs9
-rw-r--r--src/blocking/pty.rs6
-rw-r--r--src/command.rs9
-rw-r--r--src/error.rs57
-rw-r--r--src/lib.rs2
-rw-r--r--src/pty.rs9
6 files changed, 18 insertions, 74 deletions
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<Child> {
- 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<Self> {
- 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<std::fs::File> {
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<Child> {
- 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<std::io::Error> for Source {
+impl std::convert::From<std::io::Error> for Error {
fn from(e: std::io::Error) -> Self {
Self::Io(e)
}
}
-impl std::convert::From<nix::Error> for Source {
+impl std::convert::From<nix::Error> 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<T> = std::result::Result<T, Error>;
-
-pub fn create_pty<S: std::convert::Into<Source>>(source: S) -> Error {
- Error::CreatePty(source.into())
-}
-
-pub fn set_term_size<S: std::convert::Into<Source>>(source: S) -> Error {
- Error::SetTermSize(source.into())
-}
-
-pub fn spawn<S: std::convert::Into<Source>>(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<Self> {
- 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<std::fs::File> {