From daa476730434e320bcda05e36832fb768b73b318 Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Sun, 25 Jan 2026 12:22:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E4=BC=A0=E9=80=92=E6=A0=87=E8=AF=86):=20?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BC=A0=E9=80=92=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/fs/symfs_windows.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/internal/fs/symfs_windows.go b/internal/fs/symfs_windows.go index 54e4db2..ea6a2c9 100644 --- a/internal/fs/symfs_windows.go +++ b/internal/fs/symfs_windows.go @@ -429,7 +429,7 @@ func (s *SymFS) watch() { windows.FILE_SHARE_READ|windows.FILE_SHARE_WRITE|windows.FILE_SHARE_DELETE, nil, windows.OPEN_EXISTING, - windows.FILE_FLAG_BACKUP_SEMANTICS|windows.FILE_FLAG_OVERLAPPED, + windows.FILE_FLAG_BACKUP_SEMANTICS, 0, ) if err != nil { @@ -497,9 +497,15 @@ func (s *SymFS) watch() { func (s *SymFS) fillStat(stat *fuse.Stat_t, fi os.FileInfo) { stat.Size = fi.Size() stat.Mtim = fuse.NewTimespec(fi.ModTime()) - stat.Atim = stat.Mtim - stat.Ctim = stat.Mtim - stat.Birthtim = stat.Mtim + if sys, ok := fi.Sys().(*syscall.Win32FileAttributeData); ok { + stat.Atim = fuse.NewTimespec(time.Unix(0, sys.LastAccessTime.Nanoseconds())) + stat.Birthtim = fuse.NewTimespec(time.Unix(0, sys.CreationTime.Nanoseconds())) + stat.Ctim = stat.Mtim + } else { + stat.Atim = stat.Mtim + stat.Ctim = stat.Mtim + stat.Birthtim = stat.Mtim + } mode := uint32(fi.Mode() & os.ModePerm) if fi.IsDir() { mode |= fuse.S_IFDIR