package archive import ( "syscall" "time" ) // chtimes will set the create time on a file using the given modtime. // This requires calling SetFileTime and explicitly including the create time. func chtimes(path string, atime, mtime time.Time) error { ctimespec := syscall.NsecToTimespec(mtime.UnixNano()) pathp, e := syscall.UTF16PtrFromString(path) if e != nil { return e } h, e := syscall.CreateFile(pathp, syscall.FILE_WRITE_ATTRIBUTES, syscall.FILE_SHARE_WRITE, nil, syscall.OPEN_EXISTING, syscall.FILE_FLAG_BACKUP_SEMANTICS, 0) if e != nil { return e } defer syscall.Close(h) c := syscall.NsecToFiletime(syscall.TimespecToNsec(ctimespec)) return syscall.SetFileTime(h, &c, nil, nil) }