mirror of
https://github.com/kovidgoyal/kitty
synced 2026-06-06 01:05:48 +02:00
fsync before rename for atomic write
This commit is contained in:
@@ -61,13 +61,12 @@ func AtomicWriteFile(path string, data io.Reader, perm os.FileMode) (err error)
|
||||
removed = true
|
||||
}
|
||||
}()
|
||||
_, err = io.Copy(f, data)
|
||||
if err == nil {
|
||||
err = f.Chmod(perm)
|
||||
if err == nil {
|
||||
err = os.Rename(f.Name(), path)
|
||||
if err == nil {
|
||||
removed = true
|
||||
if _, err = io.Copy(f, data); err == nil {
|
||||
if err = f.Chmod(perm); err == nil {
|
||||
if err = f.Sync(); err == nil { // Sync before rename to ensure we dont end up with a zero sized file
|
||||
if err = os.Rename(f.Name(), path); err == nil {
|
||||
removed = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user