uapi 0.2.1

Wrappers for OS APIs on UNIX-like platform
Documentation
use std::{fs::metadata, os::unix::fs::PermissionsExt};
use testutils::*;
use uapi::*;

#[test]
fn openat1() {
    const MODE: c::mode_t = 0o712;

    let f = || {
        let tmp = Tempdir::new();
        let dir = open(&tmp, c::O_RDONLY, 0).unwrap();
        openat(*dir, "a", c::O_CREAT | c::O_RDONLY, MODE).unwrap();
        metadata(format_ustr!("{}/a", tmp).as_path())
            .unwrap()
            .permissions()
            .mode()
            & 0o777
    };

    umask(0);
    assert_eq!(f() as c::mode_t, MODE);
    umask(0o077);
    assert_eq!(f(), 0o700);
}