diff options
author | Jesse Luehrs <doy@tozt.net> | 2013-03-19 23:30:49 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2013-03-19 23:30:49 -0500 |
commit | 7a0d31af21d363ca5fef535d69a37b4e11c5b1cb (patch) | |
tree | 50a98b4f0ce6447fa447bedcfbdc749e1fc95eef | |
parent | d81b604ed963ac571bbeefa033b7744ad3f51d5e (diff) | |
download | rust-term-7a0d31af21d363ca5fef535d69a37b4e11c5b1cb.tar.gz rust-term-7a0d31af21d363ca5fef535d69a37b4e11c5b1cb.zip |
better api
-rw-r--r-- | src/ios.rs | 9 | ||||
-rw-r--r-- | test/termios2.rs | 3 |
2 files changed, 8 insertions, 4 deletions
@@ -2,11 +2,11 @@ use core::libc::c_int; enum struct_termios {} -pub struct PreserveTermios { +struct PreserveTermios { priv state: *struct_termios, } -pub fn PreserveTermios () -> ~PreserveTermios { +fn PreserveTermios () -> ~PreserveTermios { ~PreserveTermios { state: unsafe { c::get() } } } @@ -42,3 +42,8 @@ pub fn raw () -> bool { pub fn echo (enable: bool) -> bool { unsafe { c::echo(enable as c_int) as bool } } + +pub fn preserve<T> (body: &fn () -> T) -> T { + let _guard = PreserveTermios(); + body() +} diff --git a/test/termios2.rs b/test/termios2.rs index 13d14d3..6b70464 100644 --- a/test/termios2.rs +++ b/test/termios2.rs @@ -12,8 +12,7 @@ fn loop_chars () { } fn main () { - { - let preserve = term::ios::PreserveTermios(); + do term::ios::preserve { term::ios::raw(); loop_chars(); } |