Clean up imports in raw module
This commit is contained in:
parent
12e08141c4
commit
7da5fbf36f
18
src/raw.rs
18
src/raw.rs
|
@ -1,4 +1,4 @@
|
||||||
use std::io::{Write, Error, ErrorKind, Result as IoResult};
|
use std::io::{self, Write};
|
||||||
use std::ops::{Deref, DerefMut};
|
use std::ops::{Deref, DerefMut};
|
||||||
|
|
||||||
/// A terminal restorer, which keeps the previous state of the terminal, and restores it, when
|
/// A terminal restorer, which keeps the previous state of the terminal, and restores it, when
|
||||||
|
@ -12,7 +12,7 @@ pub struct RawTerminal<W: Write> {
|
||||||
impl<W: Write> Drop for RawTerminal<W> {
|
impl<W: Write> Drop for RawTerminal<W> {
|
||||||
fn drop(&mut self) {
|
fn drop(&mut self) {
|
||||||
use control::TermWrite;
|
use control::TermWrite;
|
||||||
self.csi(b"R");
|
let _ = self.csi(b"R");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,11 +48,11 @@ impl<W: Write> DerefMut for RawTerminal<W> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<W: Write> Write for RawTerminal<W> {
|
impl<W: Write> Write for RawTerminal<W> {
|
||||||
fn write(&mut self, buf: &[u8]) -> IoResult<usize> {
|
fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
|
||||||
self.output.write(buf)
|
self.output.write(buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn flush(&mut self) -> IoResult<()> {
|
fn flush(&mut self) -> io::Result<()> {
|
||||||
self.output.flush()
|
self.output.flush()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,18 +64,18 @@ pub trait IntoRawMode: Write + Sized {
|
||||||
/// Raw mode means that stdin won't be printed (it will instead have to be written manually by the
|
/// Raw mode means that stdin won't be printed (it will instead have to be written manually by the
|
||||||
/// program). Furthermore, the input isn't canonicalised or buffered (that is, you can read from
|
/// program). Furthermore, the input isn't canonicalised or buffered (that is, you can read from
|
||||||
/// stdin one byte of a time). The output is neither modified in any way.
|
/// stdin one byte of a time). The output is neither modified in any way.
|
||||||
fn into_raw_mode(self) -> IoResult<RawTerminal<Self>>;
|
fn into_raw_mode(self) -> io::Result<RawTerminal<Self>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<W: Write> IntoRawMode for W {
|
impl<W: Write> IntoRawMode for W {
|
||||||
#[cfg(not(target_os = "redox"))]
|
#[cfg(not(target_os = "redox"))]
|
||||||
fn into_raw_mode(self) -> IoResult<RawTerminal<W>> {
|
fn into_raw_mode(self) -> io::Result<RawTerminal<W>> {
|
||||||
use termios::{cfmakeraw, get_terminal_attr, set_terminal_attr};
|
use termios::{cfmakeraw, get_terminal_attr, set_terminal_attr};
|
||||||
|
|
||||||
let (mut ios, exit) = get_terminal_attr();
|
let (mut ios, exit) = get_terminal_attr();
|
||||||
let prev_ios = ios.clone();
|
let prev_ios = ios.clone();
|
||||||
if exit != 0 {
|
if exit != 0 {
|
||||||
return Err(Error::new(ErrorKind::Other, "Unable to get Termios attribute."));
|
return Err(io::Error::new(io::ErrorKind::Other, "Unable to get Termios attribute."));
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
|
@ -83,7 +83,7 @@ impl<W: Write> IntoRawMode for W {
|
||||||
}
|
}
|
||||||
|
|
||||||
if set_terminal_attr(&mut ios as *mut _) != 0 {
|
if set_terminal_attr(&mut ios as *mut _) != 0 {
|
||||||
Err(Error::new(ErrorKind::Other, "Unable to set Termios attribute."))
|
Err(io::Error::new(io::ErrorKind::Other, "Unable to set Termios attribute."))
|
||||||
} else {
|
} else {
|
||||||
Ok(RawTerminal {
|
Ok(RawTerminal {
|
||||||
prev_ios: prev_ios,
|
prev_ios: prev_ios,
|
||||||
|
@ -92,7 +92,7 @@ impl<W: Write> IntoRawMode for W {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#[cfg(target_os = "redox")]
|
#[cfg(target_os = "redox")]
|
||||||
fn into_raw_mode(mut self) -> IoResult<RawTerminal<W>> {
|
fn into_raw_mode(mut self) -> io::Result<RawTerminal<W>> {
|
||||||
use control::TermWrite;
|
use control::TermWrite;
|
||||||
|
|
||||||
self.csi(b"r").map(|_| RawTerminal {
|
self.csi(b"r").map(|_| RawTerminal {
|
||||||
|
|
Loading…
Reference in New Issue