Skip to content

Commit

Permalink
Throw error in set_terminal_attr when started without a TTY
Browse files Browse the repository at this point in the history
  • Loading branch information
ojanke authored Dec 10, 2024
1 parent fc8f977 commit 85aa4cc
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/terminal/sys/unix.rs
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,14 @@ fn get_terminal_attr(fd: impl AsFd) -> io::Result<Termios> {

#[cfg(not(feature = "libc"))]
fn set_terminal_attr(fd: impl AsFd, termios: &Termios) -> io::Result<()> {
// When stdin is not a tty, fd points to '/dev/tty', causing tcsetattr to hang on macOS.
if !rustix::termios::isatty(std::io::stdin()) {
return Err(io::Error::new(
io::ErrorKind::Other,
"Attempt to set terminal attributes with no terminal attached",
))
}

rustix::termios::tcsetattr(fd, rustix::termios::OptionalActions::Now, termios)?;
Ok(())
}
Expand Down

0 comments on commit 85aa4cc

Please sign in to comment.