]> Cypherpunks repositories - gostls13.git/commitdiff
os, syscall: mingw bug fixes
authorAlex Brainman <alex.brainman@gmail.com>
Wed, 14 Apr 2010 05:30:41 +0000 (22:30 -0700)
committerRuss Cox <rsc@golang.org>
Wed, 14 Apr 2010 05:30:41 +0000 (22:30 -0700)
R=rsc
CC=golang-dev
https://golang.org/cl/815044

src/pkg/os/file_mingw.go
src/pkg/os/stat_mingw.go
src/pkg/syscall/syscall_mingw.go

index b9ba6a984d0840d7050890b00dbed2ca54355b77..41bbe1e2ded1938131d166022df2d410e6f39412 100644 (file)
@@ -55,7 +55,7 @@ func Open(name string, flag int, perm int) (file *File, err Error) {
        if e == nil {
                return r, nil
        }
-       r, e = openFile(name, flag|syscall.O_CLOEXEC, perm)
+       r, e = openFile(name, flag, perm)
        if e == nil {
                return r, nil
        }
index b22843aeaa6ca04264363f09a27c2f86bd03961b..f2112759b4b0b9ef79bb4e7e2f95779c78a3f04a 100644 (file)
@@ -10,8 +10,7 @@ func fileInfoFromStat(name string, fi *FileInfo, lstat, stat *syscall.Stat_t) *F
        fi.Mode = 0
        if stat.Windata.FileAttributes == syscall.FILE_ATTRIBUTE_DIRECTORY {
                fi.Mode = fi.Mode | syscall.S_IFDIR
-       }
-       if stat.Windata.FileAttributes == syscall.FILE_ATTRIBUTE_NORMAL {
+       } else {
                fi.Mode = fi.Mode | syscall.S_IFREG
        }
        if stat.Windata.FileAttributes == syscall.FILE_ATTRIBUTE_READONLY {
index c3f8b9fb7ec62d67a2074a3b0a4d4c7253679716..99f649e4fc2aa9f31e52e603e7eec9a20075c731 100644 (file)
@@ -132,21 +132,19 @@ func Open(path string, mode int, perm int) (fd int, errno int) {
        if len(path) == 0 {
                return -1, ERROR_FILE_NOT_FOUND
        }
-       var access, sharemode uint32
-       switch {
-       case mode&O_CREAT != 0:
-               access = GENERIC_READ | GENERIC_WRITE
-               sharemode = 0
-       case mode&O_RDWR == O_RDONLY:
+       var access uint32
+       switch mode & (O_RDONLY | O_WRONLY | O_RDWR) {
+       case O_RDONLY:
                access = GENERIC_READ
-               sharemode = FILE_SHARE_READ
-       case mode&O_RDWR == O_WRONLY:
+       case O_WRONLY:
                access = GENERIC_WRITE
-               sharemode = FILE_SHARE_READ
-       case mode&O_RDWR == O_RDWR:
+       case O_RDWR:
                access = GENERIC_READ | GENERIC_WRITE
-               sharemode = FILE_SHARE_READ | FILE_SHARE_WRITE
        }
+       if mode&O_CREAT != 0 {
+               access |= GENERIC_WRITE
+       }
+       sharemode := uint32(FILE_SHARE_READ | FILE_SHARE_WRITE)
        var createmode uint32
        switch {
        case mode&O_CREAT != 0: