summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Donovan <adonovan@google.com>2023-01-17 11:30:48 -0500
committerAlan Donovan <adonovan@google.com>2023-01-17 18:12:07 +0000
commitc0799f7015e6cae37c21294bb94f56050fda5f4e (patch)
tree90ac08853d06a19c235e2adcfa1d65aeefc17f2b
parentd74c31f0ba8b7940350f93df044a5cb7002e02d0 (diff)
downloadgo-git-c0799f7015e6cae37c21294bb94f56050fda5f4e.tar.gz
os: document that Rename is not atomic on non-Unix platforms
Windows provides no reliable way to rename files atomically. The Plan 9 implementation of os.Rename performs a deletion if the target exists. Change-Id: Ife5f9c97b21f48c11e300cd76d8c7f715db09fd4 Reviewed-on: https://go-review.googlesource.com/c/go/+/462395 Auto-Submit: Alan Donovan <adonovan@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Alan Donovan <adonovan@google.com> Reviewed-by: Bryan Mills <bcmills@google.com>
-rw-r--r--src/os/file.go1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/os/file.go b/src/os/file.go
index 6781b54da0..3d71ac068e 100644
--- a/src/os/file.go
+++ b/src/os/file.go
@@ -338,6 +338,7 @@ var lstat = Lstat
// Rename renames (moves) oldpath to newpath.
// If newpath already exists and is not a directory, Rename replaces it.
// OS-specific restrictions may apply when oldpath and newpath are in different directories.
+// Even within the same directory, on non-Unix platforms Rename is not an atomic operation.
// If there is an error, it will be of type *LinkError.
func Rename(oldpath, newpath string) error {
return rename(oldpath, newpath)