1
0
mirror of https://github.com/golang/go synced 2024-11-25 00:37:57 -07:00

os: add Sync to *File, wraps syscall.Fsync

R=rsc, brainman, r, r2
CC=golang-dev
https://golang.org/cl/3887042
This commit is contained in:
Andrew Gerrand 2011-01-12 11:08:39 +11:00
parent 02e88019f2
commit 217693e93c
2 changed files with 16 additions and 0 deletions

View File

@ -408,6 +408,19 @@ func (f *File) Truncate(size int64) Error {
return nil 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 // Chtimes changes the access and modification times of the named
// file, similar to the Unix utime() or utimes() functions. // file, similar to the Unix utime() or utimes() functions.
// //

View File

@ -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 Lchown(path string, uid int, gid int) (errno int) { return EWINDOWS }
func Fchown(fd int, 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 Getuid() (uid int) { return -1 }
func Geteuid() (euid int) { return -1 } func Geteuid() (euid int) { return -1 }
func Getgid() (gid int) { return -1 } func Getgid() (gid int) { return -1 }