1b8a62b91Sopenharmony_ci#[cfg(not(any(target_os = "redox", target_os = "wasi")))] 2b8a62b91Sopenharmony_ci#[test] 3b8a62b91Sopenharmony_cifn test_futimens() { 4b8a62b91Sopenharmony_ci use rustix::fs::{cwd, fstat, futimens, openat, Mode, OFlags, Timespec, Timestamps}; 5b8a62b91Sopenharmony_ci 6b8a62b91Sopenharmony_ci let tmp = tempfile::tempdir().unwrap(); 7b8a62b91Sopenharmony_ci let dir = openat(cwd(), tmp.path(), OFlags::RDONLY, Mode::empty()).unwrap(); 8b8a62b91Sopenharmony_ci 9b8a62b91Sopenharmony_ci let foo = openat( 10b8a62b91Sopenharmony_ci &dir, 11b8a62b91Sopenharmony_ci "foo", 12b8a62b91Sopenharmony_ci OFlags::CREATE | OFlags::WRONLY | OFlags::CLOEXEC, 13b8a62b91Sopenharmony_ci Mode::empty(), 14b8a62b91Sopenharmony_ci ) 15b8a62b91Sopenharmony_ci .unwrap(); 16b8a62b91Sopenharmony_ci 17b8a62b91Sopenharmony_ci let times = Timestamps { 18b8a62b91Sopenharmony_ci last_access: Timespec { 19b8a62b91Sopenharmony_ci tv_sec: 44000, 20b8a62b91Sopenharmony_ci tv_nsec: 45000, 21b8a62b91Sopenharmony_ci }, 22b8a62b91Sopenharmony_ci last_modification: Timespec { 23b8a62b91Sopenharmony_ci tv_sec: 46000, 24b8a62b91Sopenharmony_ci tv_nsec: 47000, 25b8a62b91Sopenharmony_ci }, 26b8a62b91Sopenharmony_ci }; 27b8a62b91Sopenharmony_ci futimens(&foo, ×).unwrap(); 28b8a62b91Sopenharmony_ci 29b8a62b91Sopenharmony_ci let after = fstat(&foo).unwrap(); 30b8a62b91Sopenharmony_ci 31b8a62b91Sopenharmony_ci assert_eq!(times.last_modification.tv_sec as u64, after.st_mtime as u64); 32b8a62b91Sopenharmony_ci #[cfg(not(target_os = "netbsd"))] 33b8a62b91Sopenharmony_ci assert_eq!( 34b8a62b91Sopenharmony_ci times.last_modification.tv_nsec as u64, 35b8a62b91Sopenharmony_ci after.st_mtime_nsec as u64 36b8a62b91Sopenharmony_ci ); 37b8a62b91Sopenharmony_ci #[cfg(target_os = "netbsd")] 38b8a62b91Sopenharmony_ci assert_eq!( 39b8a62b91Sopenharmony_ci times.last_modification.tv_nsec as u64, 40b8a62b91Sopenharmony_ci after.st_mtimensec as u64 41b8a62b91Sopenharmony_ci ); 42b8a62b91Sopenharmony_ci} 43