about summary refs log tree commit diff
path: root/src/libextra
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2013-08-21 09:31:02 -0400
committerNiko Matsakis <niko@alum.mit.edu>2013-08-21 10:50:42 -0400
commitffb6404c5ade3af113738c3cb72fd853e82a379e (patch)
tree1d23b3e18b9b6da03291111a039cf3e9aca7f717 /src/libextra
parent82a9abbf624daaaca0c9761ee1bea6097472975c (diff)
Adjust callbacks in the libraries for the new type of extern fns
cc #3678
Diffstat (limited to 'src/libextra')
-rw-r--r--src/libextra/rl.rs26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/libextra/rl.rs b/src/libextra/rl.rs
index db87cf94641..09ef7f22be5 100644
--- a/src/libextra/rl.rs
+++ b/src/libextra/rl.rs
@@ -16,27 +16,31 @@ use std::libc::{c_char, c_int};
 use std::local_data;
 use std::str;
 
+#[cfg(stage0)]
 pub mod rustrt {
     use std::libc::{c_char, c_int};
 
-    #[cfg(stage0)]
-    mod macro_hack {
-    #[macro_escape];
-    macro_rules! externfn(
-        (fn $name:ident ($($arg_name:ident : $arg_ty:ty),*) $(-> $ret_ty:ty),*) => (
-            extern {
-                fn $name($($arg_name : $arg_ty),*) $(-> $ret_ty),*;
-            }
-        )
-    )
+    extern {
+        fn linenoise(prompt: *c_char) -> *c_char;
+        fn linenoiseHistoryAdd(line: *c_char) -> c_int;
+        fn linenoiseHistorySetMaxLen(len: c_int) -> c_int;
+        fn linenoiseHistorySave(file: *c_char) -> c_int;
+        fn linenoiseHistoryLoad(file: *c_char) -> c_int;
+        fn linenoiseSetCompletionCallback(callback: *u8);
+        fn linenoiseAddCompletion(completions: *(), line: *c_char);
     }
+}
+
+#[cfg(not(stage0))]
+pub mod rustrt {
+    use std::libc::{c_char, c_int};
 
     externfn!(fn linenoise(prompt: *c_char) -> *c_char)
     externfn!(fn linenoiseHistoryAdd(line: *c_char) -> c_int)
     externfn!(fn linenoiseHistorySetMaxLen(len: c_int) -> c_int)
     externfn!(fn linenoiseHistorySave(file: *c_char) -> c_int)
     externfn!(fn linenoiseHistoryLoad(file: *c_char) -> c_int)
-    externfn!(fn linenoiseSetCompletionCallback(callback: *u8))
+    externfn!(fn linenoiseSetCompletionCallback(callback: extern "C" fn(*i8, *())))
     externfn!(fn linenoiseAddCompletion(completions: *(), line: *c_char))
 }