]> Cypherpunks repositories - gostls13.git/commitdiff
os: document that Rename is not atomic on non-Unix platforms
authorAlan Donovan <adonovan@google.com>
Tue, 17 Jan 2023 16:30:48 +0000 (11:30 -0500)
committerAlan Donovan <adonovan@google.com>
Tue, 17 Jan 2023 18:12:07 +0000 (18:12 +0000)
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>
src/os/file.go

index 6781b54da0f254f5e3ce8f7938ff622ffcae7491..3d71ac068e244d189956fcb6fd7d92e12a17c1cb 100644 (file)
@@ -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)