Skip to content
Snippets Groups Projects
Commit c70e6074 authored by Jeremy Soller's avatar Jeremy Soller
Browse files

Merge branch 'raw' into 'master'

Use stdout to get and set terminal attributes

See merge request redox-os/termion!161
parents a69af178 1c936ca0
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