summaryrefslogtreecommitdiff
path: root/src/pkg
diff options
context:
space:
mode:
authorAlex Brainman <alex.brainman@gmail.com>2010-05-31 13:43:40 +0200
committerAlex Brainman <alex.brainman@gmail.com>2010-05-31 13:43:40 +0200
commitda2f21b08baefcdbbffdffde1b2855b61223e551 (patch)
tree96b52e26c2f6b338ed8dd7a61a69bf33ef07a1f6 /src/pkg
parentb51989bcee8aa7e0742bbcf15a2940aa04f9f244 (diff)
downloadgolang-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.go7
-rw-r--r--src/pkg/syscall/syscall_windows.go11
-rw-r--r--src/pkg/syscall/zsyscall_windows_386.go2
-rw-r--r--src/pkg/syscall/ztypes_windows_386.go10
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