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 | ||||
| 
 | ||||
| // 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) { | ||||
| 	// Map os package flags to syscall flags. | ||||
| 	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)) | ||||
| 	fp, err := syscall.Open(path, flag, uint32(perm)) | ||||
| 	return unixFileHandle(fp), handleSyscallError(err) | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Загрузка…
	
	Создание таблицы
		
		Сослаться в новой задаче
	
	 Nia Waldvogel
						Nia Waldvogel