pseudoterm 0.1.1

Low-level library for creating PTYs
Documentation
use super::*;

use std::{
    fs::File,
    io::{self, prelude::*},
    os::unix::io::{FromRawFd, RawFd}
};

pub type Termios = redox_termios::Termios;

pub struct TermiosSetter(File);
impl TermiosSetter {
    pub fn new(fd: RawFd) -> io::Result<Self> {
        let termios = e(syscall::dup(fd, b"termios"))?;
        Ok(TermiosSetter(unsafe { File::from_raw_fd(termios) }))
    }
    pub fn get(&mut self) -> io::Result<Termios> {
        let mut termios = redox_termios::Termios::default();
        self.0.read(&mut termios)?;
        Ok(termios)
    }
    pub fn set(&mut self, termios: &Termios) -> io::Result<()> {
        self.0.write(&termios).map(|_| ())
    }
}

pub fn make_raw(termios: &mut Termios) {
    termios.make_raw()
}