uapi 0.2.13

Wrappers for OS APIs on UNIX-like platform
Documentation
use testutils::*;
use uapi::*;

#[test]
fn accept4_() {
    let tmp = Tempdir::new();

    let server_path = format!("{}/server", tmp);

    let server_addr = super::addr(&server_path);

    let server = socket(c::AF_UNIX, c::SOCK_STREAM, 0).unwrap();
    bind(*server, &server_addr).unwrap();
    listen(*server, 128).unwrap();

    let thread = std::thread::spawn(move || {
        for _ in 0..2 {
            let client = socket(c::AF_UNIX, c::SOCK_STREAM, 0).unwrap();
            connect(*client, &server_addr).unwrap();
        }
    });

    let client = accept4(*server, sockaddr_none_mut(), 0).unwrap().0;
    assert_ne!(fcntl_getfd(*client).unwrap() & c::FD_CLOEXEC, c::FD_CLOEXEC);

    let client = accept4(*server, sockaddr_none_mut(), c::SOCK_CLOEXEC)
        .unwrap()
        .0;
    assert_eq!(fcntl_getfd(*client).unwrap() & c::FD_CLOEXEC, c::FD_CLOEXEC);

    thread.join().unwrap();
}