Commit 03526597 authored by Alex Brainman's avatar Alex Brainman Committed by Russ Cox

os, syscall: mingw bug fixes

R=rsc
CC=golang-dev
https://golang.org/cl/815044
parent 6aad4191
......@@ -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
}
......
......@@ -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 {
......
......@@ -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:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment