Add `from_file_descriptors()` to `tty::unix`

This commit is contained in:
Owen Law 2024-05-01 01:27:54 -04:00 committed by GitHub
parent ce800bfde2
commit ed3fac8a03
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 0 deletions

View File

@ -10,6 +10,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## 0.23.0-dev
### Added
- `tty::unix::from_fd()` to create a TTY from a pre-opened PTY's file-descriptors
### Changed
- **`Term` is not focused by default anymore**

View File

@ -4,6 +4,7 @@ use std::ffi::CStr;
use std::fs::File;
use std::io::{Error, ErrorKind, Read, Result};
use std::mem::MaybeUninit;
use std::os::fd::OwnedFd;
use std::os::unix::io::{AsRawFd, FromRawFd};
use std::os::unix::net::UnixStream;
use std::os::unix::process::CommandExt;
@ -184,6 +185,11 @@ fn default_shell_command(shell: &str, user: &str) -> Command {
pub fn new(config: &Options, window_size: WindowSize, window_id: u64) -> Result<Pty> {
let pty = openpty(None, Some(&window_size.to_winsize()))?;
let (master, slave) = (pty.controller, pty.user);
from_fd(config, window_id, master, slave)
}
/// Create a new TTY from a PTY's file descriptors.
pub fn from_fd(config: &Options, window_id: u64, master: OwnedFd, slave: OwnedFd) -> Result<Pty> {
let master_fd = master.as_raw_fd();
let slave_fd = slave.as_raw_fd();