diff options
author | Alex Brainman <alex.brainman@gmail.com> | 2010-05-31 13:43:40 +0200 |
---|---|---|
committer | Alex Brainman <alex.brainman@gmail.com> | 2010-05-31 13:43:40 +0200 |
commit | da2f21b08baefcdbbffdffde1b2855b61223e551 (patch) | |
tree | 96b52e26c2f6b338ed8dd7a61a69bf33ef07a1f6 /src/pkg | |
parent | b51989bcee8aa7e0742bbcf15a2940aa04f9f244 (diff) | |
download | golang-da2f21b08baefcdbbffdffde1b2855b61223e551.tar.gz |
implement os.FileInfo.*time_ns for windows
R=golang-dev, adg
CC=golang-dev
http://codereview.appspot.com/1145044
Committer: Andrew Gerrand <adg@golang.org>
Diffstat (limited to 'src/pkg')
-rw-r--r--[-rwxr-xr-x] | src/pkg/os/stat_windows.go | 7 | ||||
-rw-r--r-- | src/pkg/syscall/syscall_windows.go | 11 | ||||
-rw-r--r-- | src/pkg/syscall/zsyscall_windows_386.go | 2 | ||||
-rw-r--r-- | src/pkg/syscall/ztypes_windows_386.go | 10 |
4 files changed, 17 insertions, 13 deletions
diff --git a/src/pkg/os/stat_windows.go b/src/pkg/os/stat_windows.go index 2d5bf137c..d7ff6faf4 100755..100644 --- a/src/pkg/os/stat_windows.go +++ b/src/pkg/os/stat_windows.go @@ -39,9 +39,8 @@ func setFileInfo(fi *FileInfo, name string, fa, sizehi, sizelo uint32, ctime, at fi.Size = int64(sizehi)<<32 + int64(sizelo) fi.Name = name fi.FollowedSymlink = false - // TODO(brainman): use ctime atime wtime to prime following FileInfo fields - fi.Atime_ns = 0 - fi.Mtime_ns = 0 - fi.Ctime_ns = 0 + fi.Atime_ns = atime.Microseconds() * 1000 + fi.Mtime_ns = wtime.Microseconds() * 1000 + fi.Ctime_ns = ctime.Microseconds() * 1000 return fi } diff --git a/src/pkg/syscall/syscall_windows.go b/src/pkg/syscall/syscall_windows.go index 984459dae..5b3fe2d9d 100644 --- a/src/pkg/syscall/syscall_windows.go +++ b/src/pkg/syscall/syscall_windows.go @@ -369,16 +369,11 @@ func Ftruncate(fd int, length int64) (errno int) { func Gettimeofday(tv *Timeval) (errno int) { var ft Filetime - // 100-nanosecond intervals since January 1, 1601 GetSystemTimeAsFileTime(&ft) - t := uint64(ft.HighDateTime)<<32 + uint64(ft.LowDateTime) - // convert into microseconds - t /= 10 - // change starting time to the Epoch (00:00:00 UTC, January 1, 1970) - t -= 11644473600000000 + ms := ft.Microseconds() // split into sec / usec - tv.Sec = int32(t / 1e6) - tv.Usec = int32(t) - tv.Sec + tv.Sec = int32(ms / 1e6) + tv.Usec = int32(ms) - tv.Sec return 0 } diff --git a/src/pkg/syscall/zsyscall_windows_386.go b/src/pkg/syscall/zsyscall_windows_386.go index 2032c14a6..bbe6b558a 100644 --- a/src/pkg/syscall/zsyscall_windows_386.go +++ b/src/pkg/syscall/zsyscall_windows_386.go @@ -1,4 +1,4 @@ -// mksyscall_mingw.sh -l32 syscall_mingw.go zsyscall_mingw_386.go +// mksyscall_windows.sh -l32 syscall_windows.go syscall_windows_386.go // MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT package syscall diff --git a/src/pkg/syscall/ztypes_windows_386.go b/src/pkg/syscall/ztypes_windows_386.go index d6f2d7209..9898db936 100644 --- a/src/pkg/syscall/ztypes_windows_386.go +++ b/src/pkg/syscall/ztypes_windows_386.go @@ -113,6 +113,16 @@ type Filetime struct { HighDateTime uint32 } +func (ft *Filetime) Microseconds() int64 { + // 100-nanosecond intervals since January 1, 1601 + ms := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime) + // convert into microseconds + ms /= 10 + // change starting time to the Epoch (00:00:00 UTC, January 1, 1970) + ms -= 11644473600000000 + return ms +} + type Win32finddata struct { FileAttributes uint32 CreationTime Filetime |