From d00404e72cf9eb3b374365f4e9ac0227045ae763 Mon Sep 17 00:00:00 2001 From: alice pellerin Date: Sat, 17 May 2025 18:29:39 -0400 Subject: [PATCH 1/2] add restoring creation time to copy_metadata --- helix-stdx/src/faccess.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/helix-stdx/src/faccess.rs b/helix-stdx/src/faccess.rs index 80b668b14..af87cf73c 100644 --- a/helix-stdx/src/faccess.rs +++ b/helix-stdx/src/faccess.rs @@ -70,6 +70,16 @@ mod imp { perms.set_mode(new_perms); } + #[cfg(target_os = "macos")] + { + use std::os::macos::fs::FileTimesExt; + use std::fs::{File, FileTimes}; + + let to_file = File::options().write(true).open(to)?; + let times = FileTimes::new().set_created(from_meta.created()?); + to_file.set_times(times)?; + } + std::fs::set_permissions(to, perms)?; Ok(()) @@ -108,7 +118,9 @@ mod imp { use std::ffi::c_void; - use std::os::windows::{ffi::OsStrExt, fs::OpenOptionsExt, io::AsRawHandle}; + use std::os::windows::{ffi::OsStrExt, fs::{OpenOptionsExt, FileTimesExt}, io::AsRawHandle}; + + use std::fs::{File, FileTimes}; struct SecurityDescriptor { sd: PSECURITY_DESCRIPTOR, @@ -412,6 +424,10 @@ mod imp { let meta = std::fs::metadata(from)?; let perms = meta.permissions(); + let to_file = File::options().write(true).open(to)?; + let times = FileTimes::new().set_created(from_meta.created()?); + to_file.set_times(times)?; + std::fs::set_permissions(to, perms)?; Ok(()) From ffd8713119a0c59a84db46280fc49cb1b52ed5de Mon Sep 17 00:00:00 2001 From: alice pellerin Date: Sun, 25 May 2025 01:47:13 -0400 Subject: [PATCH 2/2] fix formatting issues and windows build --- helix-stdx/src/faccess.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/helix-stdx/src/faccess.rs b/helix-stdx/src/faccess.rs index af87cf73c..085eb7270 100644 --- a/helix-stdx/src/faccess.rs +++ b/helix-stdx/src/faccess.rs @@ -72,8 +72,8 @@ mod imp { #[cfg(target_os = "macos")] { - use std::os::macos::fs::FileTimesExt; use std::fs::{File, FileTimes}; + use std::os::macos::fs::FileTimesExt; let to_file = File::options().write(true).open(to)?; let times = FileTimes::new().set_created(from_meta.created()?); @@ -118,7 +118,11 @@ mod imp { use std::ffi::c_void; - use std::os::windows::{ffi::OsStrExt, fs::{OpenOptionsExt, FileTimesExt}, io::AsRawHandle}; + use std::os::windows::{ + ffi::OsStrExt, + fs::{FileTimesExt, OpenOptionsExt}, + io::AsRawHandle, + }; use std::fs::{File, FileTimes}; @@ -425,7 +429,7 @@ mod imp { let perms = meta.permissions(); let to_file = File::options().write(true).open(to)?; - let times = FileTimes::new().set_created(from_meta.created()?); + let times = FileTimes::new().set_created(meta.created()?); to_file.set_times(times)?; std::fs::set_permissions(to, perms)?;