aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ios.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/ios.rs b/src/ios.rs
index 95f798f..f1e6e80 100644
--- a/src/ios.rs
+++ b/src/ios.rs
@@ -1,22 +1,49 @@
use core::libc::{c_int,c_void};
use guard::guard;
+/**
+ * Put the terminal into cooked mode.
+ *
+ * This is the normal line-buffered mode.
+ */
pub fn cooked () -> int {
unsafe { c::cooked() as int }
}
+/**
+ * Put the terminal into cbreak mode.
+ *
+ * This is the normal unbuffered mode.
+ */
pub fn cbreak () -> int {
unsafe { c::cbreak() as int }
}
+/**
+ * Put the terminal into raw mode.
+ *
+ * This is like cbreak mode, except that control characters (like ^C) are not
+ * translated into signals.
+ */
pub fn raw () -> int {
unsafe { c::raw() as int }
}
+/**
+ * Change the echo mode of the terminal.
+ *
+ * `true` turns echo on, and `false` turns echo off.
+ */
pub fn echo (enable: bool) -> int {
unsafe { c::echo(enable as c_int) as int }
}
+/**
+ * Run a block of code, restoring the terminal state when the block ends.
+ *
+ * This will ensure you don't leave the terminal in a broken state, even if
+ * the current task fails.
+ */
pub fn preserve<T> (body: &fn () -> T) -> T {
let orig = unsafe { c::get() };
do guard(|| { unsafe { c::set(orig) } }) {