Use stdout to get and set terminal attributes

This commit is contained in:
Michael Bradshaw 2019-06-12 22:59:41 +00:00 committed by Jeremy Soller
parent a69af17888
commit 1c936ca06c
2 changed files with 4 additions and 4 deletions

View File

@ -5,7 +5,7 @@ use super::{cvt, syscall, Termios};
pub fn get_terminal_attr() -> io::Result<Termios> { pub fn get_terminal_attr() -> io::Result<Termios> {
let mut termios = Termios::default(); let mut termios = Termios::default();
let fd = cvt(syscall::dup(0, b"termios"))?; let fd = cvt(syscall::dup(1, b"termios"))?;
let res = cvt(syscall::read(fd, &mut termios)); let res = cvt(syscall::read(fd, &mut termios));
let _ = syscall::close(fd); let _ = syscall::close(fd);
@ -17,7 +17,7 @@ pub fn get_terminal_attr() -> io::Result<Termios> {
} }
pub fn set_terminal_attr(termios: &Termios) -> io::Result<()> { pub fn set_terminal_attr(termios: &Termios) -> io::Result<()> {
let fd = cvt(syscall::dup(0, b"termios"))?; let fd = cvt(syscall::dup(1, b"termios"))?;
let res = cvt(syscall::write(fd, termios)); let res = cvt(syscall::write(fd, termios));
let _ = syscall::close(fd); let _ = syscall::close(fd);

View File

@ -9,7 +9,7 @@ pub fn get_terminal_attr() -> io::Result<Termios> {
} }
unsafe { unsafe {
let mut termios = mem::zeroed(); let mut termios = mem::zeroed();
cvt(tcgetattr(0, &mut termios))?; cvt(tcgetattr(1, &mut termios))?;
Ok(termios) Ok(termios)
} }
} }
@ -18,7 +18,7 @@ pub fn set_terminal_attr(termios: &Termios) -> io::Result<()> {
extern "C" { extern "C" {
pub fn tcsetattr(fd: c_int, opt: c_int, termptr: *const Termios) -> c_int; pub fn tcsetattr(fd: c_int, opt: c_int, termptr: *const Termios) -> c_int;
} }
cvt(unsafe { tcsetattr(0, 0, termios) }).and(Ok(())) cvt(unsafe { tcsetattr(1, 0, termios) }).and(Ok(()))
} }
pub fn raw_terminal_attr(termios: &mut Termios) { pub fn raw_terminal_attr(termios: &mut Termios) {