os (wasi): fix opening files in read-only mode
On wasi, O_RDWR is a bitwise or of read and write mode. As a result, the bit test result was incorrect, and rewrote it to read-write mode. However, the bit tests are not necessary (and upstream Go does not use them). This passes the flags through directly.
Этот коммит содержится в:
родитель
aa053b5fb0
коммит
6afceb5621
1 изменённых файлов: 2 добавлений и 27 удалений
|
@ -1,3 +1,4 @@
|
||||||
|
//go:build !baremetal && !js
|
||||||
// +build !baremetal,!js
|
// +build !baremetal,!js
|
||||||
|
|
||||||
// Portions copyright 2009 The Go Authors. All rights reserved.
|
// Portions copyright 2009 The Go Authors. All rights reserved.
|
||||||
|
@ -87,33 +88,7 @@ func (fs unixFilesystem) Remove(path string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fs unixFilesystem) OpenFile(path string, flag int, perm FileMode) (FileHandle, error) {
|
func (fs unixFilesystem) OpenFile(path string, flag int, perm FileMode) (FileHandle, error) {
|
||||||
// Map os package flags to syscall flags.
|
fp, err := syscall.Open(path, flag, uint32(perm))
|
||||||
syscallFlag := 0
|
|
||||||
if flag&O_RDONLY != 0 {
|
|
||||||
syscallFlag |= syscall.O_RDONLY
|
|
||||||
}
|
|
||||||
if flag&O_WRONLY != 0 {
|
|
||||||
syscallFlag |= syscall.O_WRONLY
|
|
||||||
}
|
|
||||||
if flag&O_RDWR != 0 {
|
|
||||||
syscallFlag |= syscall.O_RDWR
|
|
||||||
}
|
|
||||||
if flag&O_APPEND != 0 {
|
|
||||||
syscallFlag |= syscall.O_APPEND
|
|
||||||
}
|
|
||||||
if flag&O_CREATE != 0 {
|
|
||||||
syscallFlag |= syscall.O_CREAT
|
|
||||||
}
|
|
||||||
if flag&O_EXCL != 0 {
|
|
||||||
syscallFlag |= syscall.O_EXCL
|
|
||||||
}
|
|
||||||
if flag&O_SYNC != 0 {
|
|
||||||
syscallFlag |= syscall.O_SYNC
|
|
||||||
}
|
|
||||||
if flag&O_TRUNC != 0 {
|
|
||||||
syscallFlag |= syscall.O_TRUNC
|
|
||||||
}
|
|
||||||
fp, err := syscall.Open(path, syscallFlag, uint32(perm))
|
|
||||||
return unixFileHandle(fp), handleSyscallError(err)
|
return unixFileHandle(fp), handleSyscallError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче