package snapshot import ( "os" "syscall" "time" ) // fileCTime returns the file creation time (birth time) on macOS. // // On macOS/Darwin, "ctime" refers to the file's birth time (when the file // was first created on disk). This is stored in the Birthtimespec field of // the syscall.Stat_t structure. // // This differs from Linux where "ctime" means inode change time (the last // time file metadata was modified). See ctime_linux.go for details. // // If the underlying stat information is unavailable (e.g. when using a // virtual filesystem like afero.MemMapFs), this falls back to mtime. func fileCTime(info os.FileInfo) time.Time { stat, ok := info.Sys().(*syscall.Stat_t) if !ok { return info.ModTime() } return time.Unix(stat.Birthtimespec.Sec, stat.Birthtimespec.Nsec).UTC() }