]> Cypherpunks repositories - gostls13.git/commitdiff
implement os.FileInfo.*time_ns for windows
authorAlex Brainman <alex.brainman@gmail.com>
Mon, 31 May 2010 11:43:40 +0000 (13:43 +0200)
committerAndrew Gerrand <adg@golang.org>
Mon, 31 May 2010 11:43:40 +0000 (13:43 +0200)
R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/1145044

src/pkg/os/stat_windows.go [changed mode: 0755->0644]
src/pkg/syscall/syscall_windows.go
src/pkg/syscall/zsyscall_windows_386.go
src/pkg/syscall/ztypes_windows_386.go

old mode 100755 (executable)
new mode 100644 (file)
index 2d5bf13..d7ff6fa
@@ -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
 }
index 984459dae23043fe832a7dfced76537b6a59b1dd..5b3fe2d9ddd6067a4f430701b406e3d7d09d01fe 100644 (file)
@@ -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
 }
 
index 2032c14a65074f01c879c5d72ae8f4842ff9637e..bbe6b558a4aa022b6d5d3e0bb73f7fba7c7e5b94 100644 (file)
@@ -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
index d6f2d7209091fd318bf8c0dfef95491fd084363c..9898db93615cfec0ee7c322403390b128a34ff3f 100644 (file)
@@ -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