os: another attempt to handle OpenFile flag parameter properly on Windows

Fixes #1791.

R=rsc, r, r, iant
CC=golang-dev
https://golang.org/cl/4551046
This commit is contained in:
Alex Brainman 2011-05-27 17:02:24 +10:00
parent 2386808ee9
commit cb96d98b06
2 changed files with 16 additions and 11 deletions

View file

@ -230,16 +230,13 @@ func Open(path string, mode int, perm uint32) (fd int, errno int) {
}
var createmode uint32
switch {
case mode&O_CREAT != 0:
switch {
case mode&O_EXCL != 0:
createmode = CREATE_NEW
case mode&O_APPEND != 0:
createmode = OPEN_ALWAYS
default:
createmode = CREATE_ALWAYS
}
case mode&O_TRUNC != 0:
case mode&(O_CREAT|O_EXCL) == (O_CREAT | O_EXCL):
createmode = CREATE_NEW
case mode&(O_CREAT|O_TRUNC) == (O_CREAT | O_TRUNC):
createmode = CREATE_ALWAYS
case mode&O_CREAT == O_CREAT:
createmode = OPEN_ALWAYS
case mode&O_TRUNC == O_TRUNC:
createmode = TRUNCATE_EXISTING
default:
createmode = OPEN_EXISTING