aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-04-08 21:37:38 -0500
committerJesse Luehrs <doy@tozt.net>2013-04-08 21:37:38 -0500
commitfe6d6863b20495995924e6dd328746df617571d5 (patch)
treea636558a27dd1e88b448f4b5b30e6c11c5d9ef7b
parent33d773ff5a8154bb18c93c48b5a4607f2882bcdf (diff)
downloadrust-term-fe6d6863b20495995924e6dd328746df617571d5.tar.gz
rust-term-fe6d6863b20495995924e6dd328746df617571d5.zip
use unstable::finally::Finally instead of reimplementing it
-rw-r--r--Makefile2
-rw-r--r--src/guard.rs14
-rw-r--r--src/ios.rs6
-rw-r--r--src/term.rs1
4 files changed, 5 insertions, 18 deletions
diff --git a/Makefile b/Makefile
index 1254cd0..1315c93 100644
--- a/Makefile
+++ b/Makefile
@@ -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)();
- }
-}
diff --git a/src/ios.rs b/src/ios.rs
index f1e6e80..6f57a51 100644
--- a/src/ios.rs
+++ b/src/ios.rs
@@ -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;