From a2a2e1d4663c69e379ca2cfe83cf9d074a4c0724 Mon Sep 17 00:00:00 2001 From: Jakob Borg <jakob@nym.se> Date: Mon, 30 Dec 2013 22:04:30 -0500 Subject: [PATCH] Atomically replace local index cache --- main.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index eadaf9a14..c49b7652f 100644 --- a/main.go +++ b/main.go @@ -304,13 +304,15 @@ func updateLocalModel(m *Model) { } func saveIndex(m *Model) { - fname := fmt.Sprintf("%x.idx", sha1.Sum([]byte(m.Dir()))) - idxf, err := os.Create(path.Join(ConfDir, fname)) + name := fmt.Sprintf("%x.idx", sha1.Sum([]byte(m.Dir()))) + fullName := path.Join(ConfDir, name) + idxf, err := os.Create(fullName + ".tmp") if err != nil { return } protocol.WriteIndex(idxf, m.ProtocolIndex()) idxf.Close() + os.Rename(fullName+".tmp", fullName) } func loadIndex(m *Model) { -- GitLab