use libc; use fcntl::Fd; use {Result, from_ffi}; pub use self::ffi::Winsize; pub use self::IoctlArg::*; mod ffi { use libc::c_ushort; #[derive(Clone, Copy, Debug)] pub struct Winsize { pub ws_row: c_ushort, pub ws_col: c_ushort, pub ws_xpixel: c_ushort, pub ws_ypixel: c_ushort, } #[cfg(target_os = "macos")] pub mod os { use libc::c_ulong; pub const TIOCGWINSZ: c_ulong = 0x40087468; } #[cfg(any(target_os = "linux", all(target_os = "android", not(target_arch = "mips"))))] pub mod os { use libc::c_int; pub const TIOCGWINSZ: c_int = 0x5413; } } pub enum IoctlArg<'a> { TIOCGWINSZ(&'a mut Winsize) } pub fn ioctl(fd: Fd, arg: IoctlArg) -> Result<()> { match arg { TIOCGWINSZ(&mut ref winsize) => { from_ffi(unsafe { libc::funcs::bsd44::ioctl(fd, ffi::os::TIOCGWINSZ, winsize) }) } } }