From 217693e93c23fed2f3224dfaf1eb730d8e5256bb Mon Sep 17 00:00:00 2001 From: Andrew Gerrand Date: Wed, 12 Jan 2011 11:08:39 +1100 Subject: [PATCH] os: add Sync to *File, wraps syscall.Fsync R=rsc, brainman, r, r2 CC=golang-dev https://golang.org/cl/3887042 --- src/pkg/os/file.go | 13 +++++++++++++ src/pkg/syscall/syscall_windows.go | 3 +++ 2 files changed, 16 insertions(+) diff --git a/src/pkg/os/file.go b/src/pkg/os/file.go index 909e28e68f..3f73f1dffe 100644 --- a/src/pkg/os/file.go +++ b/src/pkg/os/file.go @@ -408,6 +408,19 @@ func (f *File) Truncate(size int64) Error { return nil } +// Sync commits the current contents of the file to stable storage. +// Typically, this means flushing the file system's in-memory copy +// of recently written data to disk. +func (file *File) Sync() (err Error) { + if file == nil { + return EINVAL + } + if e := syscall.Fsync(file.fd); e != 0 { + return NewSyscallError("fsync", e) + } + return nil +} + // Chtimes changes the access and modification times of the named // file, similar to the Unix utime() or utimes() functions. // diff --git a/src/pkg/syscall/syscall_windows.go b/src/pkg/syscall/syscall_windows.go index b425337bf5..9501779e18 100644 --- a/src/pkg/syscall/syscall_windows.go +++ b/src/pkg/syscall/syscall_windows.go @@ -684,6 +684,9 @@ func Chown(path string, uid int, gid int) (errno int) { return EWINDOWS } func Lchown(path string, uid int, gid int) (errno int) { return EWINDOWS } func Fchown(fd int, uid int, gid int) (errno int) { return EWINDOWS } +// TODO(brainman): use FlushFileBuffers Windows api to implement Fsync. +func Fsync(fd int) (errno int) { return EWINDOWS } + func Getuid() (uid int) { return -1 } func Geteuid() (euid int) { return -1 } func Getgid() (gid int) { return -1 } -- 2.50.0