From 760190349b5bde2c6dc336bb2b64cd41c2783667 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 1 Apr 2013 22:12:06 -0500 Subject: add escape1 for escape sequences with one parameter --- src/curses_helper.c | 5 +++++ src/info.rs | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/curses_helper.c b/src/curses_helper.c index 2e71e0a..1daee18 100644 --- a/src/curses_helper.c +++ b/src/curses_helper.c @@ -1,6 +1,11 @@ #include #include +char *tiparm1(const char *name, int p1) +{ + return tiparm(name, p1); +} + char *tiparm2(const char *name, int p1, int p2) { return tiparm(name, p1, p2); diff --git a/src/info.rs b/src/info.rs index b4a5d60..8252d2f 100644 --- a/src/info.rs +++ b/src/info.rs @@ -12,6 +12,14 @@ pub fn escape (name: &str) -> ~str { } } +pub fn escape1 (name: &str, p1: int) -> ~str { + do str::as_c_str(name) |c_name| { + unsafe { + str::raw::from_c_str(tiparm1(tigetstr(c_name), p1)) + } + } +} + pub fn escape2 (name: &str, p1: int, p2: int) -> ~str { do str::as_c_str(name) |c_name| { unsafe { @@ -33,6 +41,15 @@ unsafe fn tigetstr (name: *c_char) -> *c_char { c_out } +unsafe fn tiparm1 (name: *c_char, p1: int) -> *c_char { + let ret = helper::tiparm1(name, p1 as c_int); + if ret == ptr::null() { + fail!(fmt!("Couldn't assemble parameters with %s %d", + unsafe { str::raw::from_c_str(name) }, p1)); + } + ret +} + unsafe fn tiparm2 (name: *c_char, p1: int, p2: int) -> *c_char { let ret = helper::tiparm2(name, p1 as c_int, p2 as c_int); if ret == ptr::null() { @@ -51,5 +68,6 @@ extern mod c { // tiparm uses varargs, which you can't bind from rust yet #[link_name = "curses_helper"] extern mod helper { + fn tiparm1(s: *c_char, p1: c_int) -> *c_char; fn tiparm2(s: *c_char, p1: c_int, p2: c_int) -> *c_char; } -- cgit v1.2.3