use crate::filesystem::primitives::OpenOptionsExt;
use crate::filesystem::primitives::{OpenOptions, open, set_times_follow_unchecked};
use rustix::fd::AsFd;
use rustix::fs::OFlags;
use rustix::path::DecInt;
use rustix_linux_procfs::proc_self_fd;
use std::path::Path;
use std::time::SystemTime;
use std::{fs, io};
pub(crate) fn set_times_through_proc_self_fd(
start: &fs::File,
path: &Path,
atime: Option<SystemTime>,
mtime: Option<SystemTime>,
) -> io::Result<()> {
let opath = open(
start,
path,
OpenOptions::new()
.read(true)
.custom_flags(OFlags::PATH.bits() as i32),
)?;
set_times_follow_unchecked(
proc_self_fd()?.as_fd(),
DecInt::from_fd(&opath).as_ref(),
atime,
mtime,
)
}