summaryrefslogtreecommitdiff
path: root/src/pkg/syscall/syscall_windows.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/syscall/syscall_windows.go')
-rw-r--r--src/pkg/syscall/syscall_windows.go45
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 {