cap_primitives/rustix/fs/
set_symlink_permissions_unchecked.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use crate::fs::Permissions;
#[cfg(unix)]
use crate::fs::PermissionsExt;
use rustix::fs::{chmodat, AtFlags, Mode};
use std::path::Path;
use std::{fs, io};

/// This can just use `AT_SYMLINK_NOFOLLOW`.
pub(crate) fn set_symlink_permissions_unchecked(
    start: &fs::File,
    path: &Path,
    perm: Permissions,
) -> io::Result<()> {
    let mode = Mode::from_bits_truncate(perm.mode().try_into().unwrap());

    Ok(chmodat(start, path, mode, AtFlags::SYMLINK_NOFOLLOW)?)
}