nix 0.26.2

Rust friendly bindings to *nix APIs
Documentation
// The conversion is not useless on all platforms.
#[allow(clippy::useless_conversion)]
#[cfg(target_os = "freebsd")]
#[test]
fn test_chflags() {
    use nix::{
        sys::stat::{fstat, FileFlag},
        unistd::chflags,
    };
    use std::os::unix::io::AsRawFd;
    use tempfile::NamedTempFile;

    let f = NamedTempFile::new().unwrap();

    let initial = FileFlag::from_bits_truncate(
        fstat(f.as_raw_fd()).unwrap().st_flags.into(),
    );
    // UF_OFFLINE is preserved by all FreeBSD file systems, but not interpreted
    // in any way, so it's handy for testing.
    let commanded = initial ^ FileFlag::UF_OFFLINE;

    chflags(f.path(), commanded).unwrap();

    let changed = FileFlag::from_bits_truncate(
        fstat(f.as_raw_fd()).unwrap().st_flags.into(),
    );

    assert_eq!(commanded, changed);
}