diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | src/guard.rs | 14 | ||||
-rw-r--r-- | src/ios.rs | 6 | ||||
-rw-r--r-- | src/term.rs | 1 |
4 files changed, 5 insertions, 18 deletions
@@ -1,7 +1,7 @@ RUSTC = rustc MAIN_SOURCE = src/term.rs -OTHER_SOURCES = src/hexes.rs src/ios.rs src/info.rs src/util.rs src/trie.rs src/guard.rs +OTHER_SOURCES = src/hexes.rs src/ios.rs src/info.rs src/util.rs src/trie.rs TESTS = bin/termios bin/termios2 bin/termios3 bin/rl bin/password bin/attrs bin/tput all: build tests diff --git a/src/guard.rs b/src/guard.rs deleted file mode 100644 index 75a28aa..0000000 --- a/src/guard.rs +++ /dev/null @@ -1,14 +0,0 @@ -pub fn guard<T> (finally: ~fn (), body: &fn () -> T) -> T { - let _guard = Guard { finally: finally }; - body() -} - -struct Guard { - priv finally: ~fn (), -} - -impl Drop for Guard { - fn finalize (&self) { - (self.finally)(); - } -} @@ -1,5 +1,5 @@ use core::libc::{c_int,c_void}; -use guard::guard; +use core::unstable::finally::Finally; /** * Put the terminal into cooked mode. @@ -46,8 +46,10 @@ pub fn echo (enable: bool) -> int { */ pub fn preserve<T> (body: &fn () -> T) -> T { let orig = unsafe { c::get() }; - do guard(|| { unsafe { c::set(orig) } }) { + do(|| { body() + }).finally { + unsafe { c::set(orig) }; } } diff --git a/src/term.rs b/src/term.rs index 3f9690e..e876dfa 100644 --- a/src/term.rs +++ b/src/term.rs @@ -12,4 +12,3 @@ pub mod info; pub mod ios; mod trie; mod util; -mod guard; |