]> git.proxmox.com Git - rustc.git/blob - src/vendor/termion/src/sys/unix/attr.rs
New upstream version 1.23.0+dfsg1
[rustc.git] / src / vendor / termion / src / sys / unix / attr.rs
1 use std::{io, mem};
2
3 use super::{cvt, Termios};
4 use super::libc::c_int;
5
6 pub fn get_terminal_attr() -> io::Result<Termios> {
7 extern "C" {
8 pub fn tcgetattr(fd: c_int, termptr: *mut Termios) -> c_int;
9 }
10 unsafe {
11 let mut termios = mem::zeroed();
12 cvt(tcgetattr(0, &mut termios))?;
13 Ok(termios)
14 }
15 }
16
17 pub fn set_terminal_attr(termios: &Termios) -> io::Result<()> {
18 extern "C" {
19 pub fn tcsetattr(fd: c_int, opt: c_int, termptr: *const Termios) -> c_int;
20 }
21 cvt(unsafe { tcsetattr(0, 0, termios) }).and(Ok(()))
22 }
23
24 pub fn raw_terminal_attr(termios: &mut Termios) {
25 extern "C" {
26 pub fn cfmakeraw(termptr: *mut Termios);
27 }
28 unsafe { cfmakeraw(termios) }
29 }