Skip to content
Snippets Groups Projects
Commit 1c936ca0 authored by Michael Bradshaw's avatar Michael Bradshaw Committed by Jeremy Soller
Browse files

Use stdout to get and set terminal attributes

parent a69af178
No related branches found
No related tags found
No related merge requests found
...@@ -5,7 +5,7 @@ use super::{cvt, syscall, Termios}; ...@@ -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> { ...@@ -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);
......
...@@ -9,7 +9,7 @@ pub fn get_terminal_attr() -> io::Result<Termios> { ...@@ -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<()> { ...@@ -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) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment