diff options
| author | Ondřej Surý <ondrej@sury.org> | 2011-04-28 10:35:15 +0200 |
|---|---|---|
| committer | Ondřej Surý <ondrej@sury.org> | 2011-04-28 10:35:15 +0200 |
| commit | c1ba1a0fec4aed430709030f98a3bdb90bfeea16 (patch) | |
| tree | 3df18657e50a0313ed6defcda30e4474cb28a467 /src/pkg/syscall/syscall_windows.go | |
| parent | 7b15ed9ef455b6b66c6b376898a88aef5d6a9970 (diff) | |
| download | golang-c1ba1a0fec4aed430709030f98a3bdb90bfeea16.tar.gz | |
Imported Upstream version 2011.04.27upstream/2011.04.27
Diffstat (limited to 'src/pkg/syscall/syscall_windows.go')
| -rw-r--r-- | src/pkg/syscall/syscall_windows.go | 45 |
1 files changed, 5 insertions, 40 deletions
diff --git a/src/pkg/syscall/syscall_windows.go b/src/pkg/syscall/syscall_windows.go index 4ac2154c8..1fbb3ccbf 100644 --- a/src/pkg/syscall/syscall_windows.go +++ b/src/pkg/syscall/syscall_windows.go @@ -220,9 +220,12 @@ func Open(path string, mode int, perm uint32) (fd int, errno int) { var createmode uint32 switch { case mode&O_CREAT != 0: - if mode&O_EXCL != 0 { + switch { + case mode&O_EXCL != 0: createmode = CREATE_NEW - } else { + case mode&O_APPEND != 0: + createmode = OPEN_ALWAYS + default: createmode = CREATE_ALWAYS } case mode&O_TRUNC != 0: @@ -247,27 +250,6 @@ func Read(fd int, p []byte) (n int, errno int) { return int(done), 0 } -// TODO(brainman): ReadFile/WriteFile change file offset, therefore -// i use Seek here to preserve semantics of unix pread/pwrite, -// not sure if I should do that - -func Pread(fd int, p []byte, offset int64) (n int, errno int) { - curoffset, e := Seek(fd, 0, 1) - if e != 0 { - return 0, e - } - defer Seek(fd, curoffset, 0) - var o Overlapped - o.OffsetHigh = uint32(offset >> 32) - o.Offset = uint32(offset) - var done uint32 - e = ReadFile(int32(fd), p, &done, &o) - if e != 0 { - return 0, e - } - return int(done), 0 -} - func Write(fd int, p []byte) (n int, errno int) { var done uint32 e := WriteFile(int32(fd), p, &done, nil) @@ -277,23 +259,6 @@ func Write(fd int, p []byte) (n int, errno int) { return int(done), 0 } -func Pwrite(fd int, p []byte, offset int64) (n int, errno int) { - curoffset, e := Seek(fd, 0, 1) - if e != 0 { - return 0, e - } - defer Seek(fd, curoffset, 0) - var o Overlapped - o.OffsetHigh = uint32(offset >> 32) - o.Offset = uint32(offset) - var done uint32 - e = WriteFile(int32(fd), p, &done, &o) - if e != 0 { - return 0, e - } - return int(done), 0 -} - func Seek(fd int, offset int64, whence int) (newoffset int64, errno int) { var w uint32 switch whence { |
