use uapi::*; cfg_if::cfg_if! { if #[cfg(target_os = "linux")] { mod linux; } } #[test] fn setfl() { let (r, _w) = pipe().unwrap(); let old = fcntl_getfl(*r).unwrap(); assert_eq!(old & c::O_NONBLOCK, 0); fcntl_setfl(*r, old | c::O_NONBLOCK).unwrap(); assert_eq!(read(*r, &mut [0][..]), Err(Errno(c::EAGAIN))); assert_ne!(fcntl_getfl(*r).unwrap() & c::O_NONBLOCK, 0); } #[test] fn setfd() { let (r, _w) = pipe().unwrap(); let old = fcntl_getfd(*r).unwrap(); assert_eq!(old & c::FD_CLOEXEC, 0); fcntl_setfd(*r, old | c::FD_CLOEXEC).unwrap(); assert_ne!(fcntl_getfd(*r).unwrap() & c::FD_CLOEXEC, 0); } #[test] #[cfg(not(any(target_os = "macos", target_os = "freebsd", target_os = "openbsd")))] fn pipesize() { let (r, _) = pipe().unwrap(); let len = fcntl_getpipe_sz(*r).unwrap(); fcntl_setpipe_sz(*r, len + 1).unwrap(); let len2 = fcntl_getpipe_sz(*r).unwrap(); assert!(len2 > len); fcntl_setpipe_sz(*r, len).unwrap(); let len2 = fcntl_getpipe_sz(*r).unwrap(); assert_eq!(len2, len); }