| //go:build !windows |
| // +build !windows |
| |
| package replacefile |
| |
| import ( |
| "os" |
| ) |
| |
| // AtomicRename renames from the source path to the destination path, |
| // atomically replacing any file that might already exist at the destination. |
| // |
| // Typically this operation can succeed only if the source and destination |
| // are within the same physical filesystem, so this function is best reserved |
| // for cases where the source and destination exist in the same directory and |
| // only the local filename differs between them. |
| // |
| // The Unix implementation of AtomicRename relies on the atomicity of renaming |
| // that is required by the ISO C standard, which in turn assumes that Go's |
| // implementation of rename is calling into a system call that preserves that |
| // guarantee. |
| func AtomicRename(source, destination string) error { |
| // On Unix systems, a rename is sufficiently atomic. |
| return os.Rename(source, destination) |
| } |