go/src/os
Richard Miller 664d270727 os: correct bad PathError message from FileOpen with O_CREATE on Plan 9
On Plan 9, FileOpen with flag O_CREATE & ~O_TRUNC is done in two
steps.  First, syscall.Open is attempted, to avoid truncation when opening
an existing file.  If that fails because the file doesn't exist,
syscall.Create is used to create a new file.  If the Create fails,
for example because we are racing with another process to create a
ModeExclusive file, the PathError returned from FileOpen should reflect
the result of the Create, not the "does not exist" error from the initial
Open attempt.

Fixes #38540

Change-Id: I90c95a301de417ecdf79cd52748591edb1dbf528
Reviewed-on: https://go-review.googlesource.com/c/go/+/229099
Run-TryBot: David du Colombier <0intro@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David du Colombier <0intro@gmail.com>
2020-04-21 11:41:40 +00:00
..
exec os/exec: build TestExtraFiles subprocess without cgo 2020-04-18 19:58:12 +00:00
signal os/signal: special-case test settle time on the solaris-amd64-oraclerel builder 2020-04-15 20:12:13 +00:00
testdata/issue37161 os: seek should invalidate any cached directory reads 2020-03-01 22:26:33 +00:00
user all: fix most of the remaining windows -d=checkptr violations 2019-12-06 05:10:34 +00:00
dir.go os: change Readdirnames doc to follow that of Readdir 2019-08-02 21:52:01 +00:00
dir_darwin.go os: seek should invalidate any cached directory reads 2020-03-01 22:26:33 +00:00
dir_plan9.go
dir_unix.go os: seek should invalidate any cached directory reads 2020-03-01 22:26:33 +00:00
dir_windows.go
env.go
env_test.go
env_unix_test.go os: add AIX operating system 2018-10-11 15:41:04 +00:00
error.go os: fix reference to nonexistent errors.Wrapper 2019-11-07 02:14:17 +00:00
error_errno.go os: don't consult Is methods on non-syscall error types 2019-08-02 21:09:50 +00:00
error_plan9.go os: don't consult Is methods on non-syscall error types 2019-08-02 21:09:50 +00:00
error_posix.go all: remove the nacl port (part 1) 2019-10-09 06:14:44 +00:00
error_test.go os: don't consult Is methods on non-syscall error types 2019-08-02 21:09:50 +00:00
error_unix_test.go all: remove the nacl port (part 1) 2019-10-09 06:14:44 +00:00
error_windows_test.go
example_test.go os: don't leak file in ExampleOpenFile_append failure path 2019-04-11 21:47:52 +00:00
exec.go
exec_plan9.go os/exec: less allocs in the common case 2019-03-04 09:45:46 +00:00
exec_posix.go os/exec: use environment variables for user token when present 2020-02-25 02:05:29 +00:00
exec_unix.go all: remove the nacl port (part 1) 2019-10-09 06:14:44 +00:00
exec_windows.go all: fix most of the remaining windows -d=checkptr violations 2019-12-06 05:10:34 +00:00
executable.go all: remove the nacl port (part 1) 2019-10-09 06:14:44 +00:00
executable_darwin.go
executable_freebsd.go
executable_path.go os: add AIX operating system 2018-10-11 15:41:04 +00:00
executable_plan9.go
executable_procfs.go all: remove the nacl port (part 1) 2019-10-09 06:14:44 +00:00
executable_solaris.go
executable_test.go all: remove the nacl port (part 1) 2019-10-09 06:14:44 +00:00
executable_windows.go
export_test.go os: use an actual RemoveAll failure in TestRemoveAllWithMoreErrorThanReqSize 2019-10-26 01:46:02 +00:00
export_unix_test.go all: remove the nacl port (part 1) 2019-10-09 06:14:44 +00:00
export_windows_test.go
fifo_test.go
file.go all: remove scattered remnants of darwin/arm 2020-04-08 18:35:49 +00:00
file_plan9.go os: correct bad PathError message from FileOpen with O_CREATE on Plan 9 2020-04-21 11:41:40 +00:00
file_posix.go os: merge common Unix/Windows methods 2020-03-20 00:26:13 +00:00
file_unix.go os: merge common Unix/Windows methods 2020-03-20 00:26:13 +00:00
file_windows.go os: merge common Unix/Windows methods 2020-03-20 00:26:13 +00:00
getwd.go
getwd_darwin.go
os_test.go all: remove scattered remnants of darwin/arm 2020-04-08 18:35:49 +00:00
os_unix_test.go os: deflake TestNewFileNonBlock 2019-05-30 22:39:04 +00:00
os_windows_test.go all: fix most of the remaining windows -d=checkptr violations 2019-12-06 05:10:34 +00:00
path.go os: return from TestRemoveAllWithMoreErrorThanReqSize when RemoveAll succeeds on Windows 2019-10-29 18:24:40 +00:00
path_plan9.go
path_test.go all: remove scattered remnants of darwin/arm 2020-04-08 18:35:49 +00:00
path_unix.go all: remove the nacl port (part 1) 2019-10-09 06:14:44 +00:00
path_windows.go
path_windows_test.go os: handle backslash and slash both in the path on Windows 2019-11-14 00:58:33 +00:00
pipe2_bsd.go
pipe_bsd.go all: remove the nacl port (part 1) 2019-10-09 06:14:44 +00:00
pipe_linux.go
pipe_test.go os: deflake TestFdReadRace by increasing timeout 2019-10-11 19:58:27 +00:00
proc.go os: document exit status range value 2019-03-27 04:37:34 +00:00
rawconn.go os: add SyscallConn method for os.File 2018-12-27 16:36:34 +00:00
rawconn_test.go all: remove the nacl port (part 1) 2019-10-09 06:14:44 +00:00
removeall_at.go os: use an actual RemoveAll failure in TestRemoveAllWithMoreErrorThanReqSize 2019-10-26 01:46:02 +00:00
removeall_noat.go Revert "os: handle long path in RemoveAll for windows" 2020-01-13 23:35:18 +00:00
removeall_test.go Revert "os: handle long path in RemoveAll for windows" 2020-01-13 23:35:18 +00:00
stat.go
stat_aix.go os: add AIX operating system 2018-10-11 15:41:04 +00:00
stat_darwin.go
stat_dragonfly.go
stat_freebsd.go syscall: revert to pre-FreeBSD 10 / POSIX-2008 timespec field names in Stat_t on FreeBSD 2018-12-30 19:36:52 +00:00
stat_js.go all: remove the nacl port (part 1) 2019-10-09 06:14:44 +00:00
stat_linux.go
stat_netbsd.go
stat_openbsd.go
stat_plan9.go
stat_solaris.go
stat_test.go os: use CreateFile for Stat of symlinks 2018-11-02 07:30:03 +00:00
stat_unix.go all: remove the nacl port (part 1) 2019-10-09 06:14:44 +00:00
stat_windows.go os: return an error when the argument of Mkdir on Windows is os.DevNull 2019-08-29 09:53:56 +00:00
sticky_bsd.go os,syscall: implement functions related to uid, gid and pid on js/wasm 2019-03-22 15:40:37 +00:00
sticky_notbsd.go os,syscall: implement functions related to uid, gid and pid on js/wasm 2019-03-22 15:40:37 +00:00
str.go
sys.go
sys_aix.go os: add AIX operating system 2018-10-11 15:41:04 +00:00
sys_bsd.go all: remove the nacl port (part 1) 2019-10-09 06:14:44 +00:00
sys_js.go
sys_linux.go
sys_plan9.go
sys_solaris.go
sys_unix.go os: add AIX operating system 2018-10-11 15:41:04 +00:00
sys_windows.go
timeout_test.go all: remove the nacl port (part 1) 2019-10-09 06:14:44 +00:00
types.go os: add ModeCharDevice to ModeType 2018-09-13 09:52:57 +00:00
types_plan9.go
types_unix.go
types_windows.go os: fix windows Lstat missing name for some files 2019-03-20 08:35:29 +00:00
wait_unimp.go all: remove the nacl port (part 1) 2019-10-09 06:14:44 +00:00
wait_wait6.go all: use "reports whether" consistently instead of "returns whether" 2018-12-02 15:12:26 +00:00
wait_waitid.go all: remove scattered remnants of darwin/386 2020-04-08 18:37:38 +00:00