diff options
-rw-r--r-- | src/command.rs | 24 | ||||
-rw-r--r-- | src/pty.rs | 26 |
2 files changed, 25 insertions, 25 deletions
diff --git a/src/command.rs b/src/command.rs index 481804f..b72d94e 100644 --- a/src/command.rs +++ b/src/command.rs @@ -6,26 +6,26 @@ use std::os::unix::process::CommandExt as _; pub struct Command { pty: crate::pty::Pty, command: std::process::Command, - slave_fh: Option<std::fs::File>, + pts_fh: Option<std::fs::File>, } impl Command { pub fn new<S: AsRef<std::ffi::OsStr>>(program: S) -> Result<Self> { let pty = crate::pty::Pty::new()?; - let master_fd = pty.master().as_raw_fd(); - let slave_fh = pty.slave()?; - let slave_fd = slave_fh.as_raw_fd(); + let pt_fd = pty.pt().as_raw_fd(); + let pts_fh = pty.pts()?; + let pts_fd = pts_fh.as_raw_fd(); let mut command = std::process::Command::new(program); command - .stdin(unsafe { std::process::Stdio::from_raw_fd(slave_fd) }) - .stdout(unsafe { std::process::Stdio::from_raw_fd(slave_fd) }) - .stderr(unsafe { std::process::Stdio::from_raw_fd(slave_fd) }); + .stdin(unsafe { std::process::Stdio::from_raw_fd(pts_fd) }) + .stdout(unsafe { std::process::Stdio::from_raw_fd(pts_fd) }) + .stderr(unsafe { std::process::Stdio::from_raw_fd(pts_fd) }); unsafe { command.pre_exec(move || { // XXX unwrap - nix::unistd::close(master_fd) + nix::unistd::close(pt_fd) .map_err(|e| e.as_errno().unwrap())?; - nix::unistd::close(slave_fd) + nix::unistd::close(pts_fd) .map_err(|e| e.as_errno().unwrap())?; Ok(()) }); @@ -33,12 +33,12 @@ impl Command { Ok(Self { pty, command, - slave_fh: Some(slave_fh), + pts_fh: Some(pts_fh), }) } pub fn pty(&self) -> &std::fs::File { - self.pty.master() + self.pty.pt() } pub fn args<I, S>(&mut self, args: I) -> &mut Self @@ -52,7 +52,7 @@ impl Command { pub fn spawn(&mut self) -> Result<std::process::Child> { let child = self.command.spawn()?; - self.slave_fh = None; + self.pts_fh = None; Ok(child) } } @@ -3,34 +3,34 @@ use crate::error::*; use std::os::unix::io::{FromRawFd as _, IntoRawFd as _}; pub struct Pty { - master: std::fs::File, - slave: std::path::PathBuf, + pt: std::fs::File, + ptsname: std::path::PathBuf, } impl Pty { pub fn new() -> Result<Self> { - let master = nix::pty::posix_openpt( + let pt = nix::pty::posix_openpt( nix::fcntl::OFlag::O_RDWR | nix::fcntl::OFlag::O_NOCTTY, )?; - nix::pty::grantpt(&master)?; - nix::pty::unlockpt(&master)?; + nix::pty::grantpt(&pt)?; + nix::pty::unlockpt(&pt)?; - let slave = nix::pty::ptsname_r(&master)?.into(); + let ptsname = nix::pty::ptsname_r(&pt)?.into(); - let master_fd = master.into_raw_fd(); - let master = unsafe { std::fs::File::from_raw_fd(master_fd) }; + let pt_fd = pt.into_raw_fd(); + let pt = unsafe { std::fs::File::from_raw_fd(pt_fd) }; - Ok(Self { master, slave }) + Ok(Self { pt, ptsname }) } - pub fn master(&self) -> &std::fs::File { - &self.master + pub fn pt(&self) -> &std::fs::File { + &self.pt } - pub fn slave(&self) -> Result<std::fs::File> { + pub fn pts(&self) -> Result<std::fs::File> { Ok(std::fs::OpenOptions::new() .read(true) .write(true) - .open(&self.slave)?) + .open(&self.ptsname)?) } } |