]> git.lizzy.rs Git - rust.git/commitdiff
Work around bugs in 32-bit enum FFI
authorAlex Crichton <alex@alexcrichton.com>
Wed, 6 Nov 2013 03:16:48 +0000 (19:16 -0800)
committerAlex Crichton <alex@alexcrichton.com>
Sun, 10 Nov 2013 09:37:11 +0000 (01:37 -0800)
cc #10308

src/librustuv/tty.rs
src/librustuv/uvll.rs
src/rt/rust_uv.cpp

index b1bc378e6176608c44dc30876ffcb2cf314ef96d..e224806cec1e6667532ecefbe15674b1be565be2 100644 (file)
@@ -88,7 +88,7 @@ fn get_winsize(&mut self) -> Result<(int, int), IoError> {
     }
 
     fn isatty(&self) -> bool {
-        unsafe { uvll::uv_guess_handle(self.fd) == uvll::UV_TTY }
+        unsafe { uvll::guess_handle(self.fd) == uvll::UV_TTY as libc::c_int }
     }
 }
 
index 09a1f8f37bdfad30bcbdbe49e9d727ac825f5750..d009201e8409a0ac626aa5b1adcf0c11fa6213eb 100644 (file)
@@ -671,6 +671,11 @@ pub unsafe fn populate_stat(req_in: *uv_fs_t, stat_out: *uv_stat_t) {
 
     rust_uv_populate_uv_stat(req_in, stat_out)
 }
+pub unsafe fn guess_handle(handle: c_int) -> c_int {
+    #[fixed_stack_segment]; #[inline(never)];
+
+    rust_uv_guess_handle(handle)
+}
 
 
 // uv_support is the result of compiling rust_uv.cpp
@@ -728,6 +733,7 @@ fn rust_uv_udp_send6(req: *uv_udp_send_t, handle: *uv_udp_t, buf_in: *uv_buf_t,
     fn rust_set_stdio_container_stream(c: *uv_stdio_container_t,
                                        stream: *uv_stream_t);
     fn rust_uv_process_pid(p: *uv_process_t) -> c_int;
+    fn rust_uv_guess_handle(fd: c_int) -> c_int;
 }
 
 // generic uv functions
@@ -861,7 +867,6 @@ fn rust_set_stdio_container_stream(c: *uv_stdio_container_t,
 externfn!(fn uv_tty_set_mode(tty: *uv_tty_t, mode: c_int) -> c_int)
 externfn!(fn uv_tty_get_winsize(tty: *uv_tty_t, width: *c_int,
                                 height: *c_int) -> c_int)
-externfn!(fn uv_guess_handle(fd: c_int) -> uv_handle_type)
 
 // signals
 externfn!(fn uv_signal_init(loop_: *uv_loop_t, handle: *uv_signal_t) -> c_int)
index 2745c6062e6e4b688da0703da95d2c4f2777f010..6f619431ad711504d78364b42e60c4e1d8f0473a 100644 (file)
@@ -334,3 +334,8 @@ extern "C" int
 rust_uv_process_pid(uv_process_t* p) {
   return p->pid;
 }
+
+extern "C" int
+rust_uv_guess_handle(int fd) {
+  return uv_guess_handle(fd);
+}