summaryrefslogtreecommitdiffstats
path: root/third_party/rust/termion/src/sys/unix/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/termion/src/sys/unix/mod.rs')
-rw-r--r--third_party/rust/termion/src/sys/unix/mod.rs33
1 files changed, 33 insertions, 0 deletions
diff --git a/third_party/rust/termion/src/sys/unix/mod.rs b/third_party/rust/termion/src/sys/unix/mod.rs
new file mode 100644
index 0000000000..08d73feb12
--- /dev/null
+++ b/third_party/rust/termion/src/sys/unix/mod.rs
@@ -0,0 +1,33 @@
+extern crate libc;
+
+use std::io;
+
+pub use self::libc::termios as Termios;
+
+pub mod attr;
+pub mod size;
+pub mod tty;
+
+// Support functions for converting libc return values to io errors {
+trait IsMinusOne {
+ fn is_minus_one(&self) -> bool;
+}
+
+macro_rules! impl_is_minus_one {
+ ($($t:ident)*) => ($(impl IsMinusOne for $t {
+ fn is_minus_one(&self) -> bool {
+ *self == -1
+ }
+ })*)
+ }
+
+impl_is_minus_one! { i8 i16 i32 i64 isize }
+
+fn cvt<T: IsMinusOne>(t: T) -> io::Result<T> {
+ if t.is_minus_one() {
+ Err(io::Error::last_os_error())
+ } else {
+ Ok(t)
+ }
+}
+// } End of support functions