diff --git a/main.go b/main.go index 7112af475..1eb5588e7 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "compress/gzip" "crypto/sha1" "crypto/tls" "fmt" @@ -295,26 +296,36 @@ func updateLocalModel(m *Model) { } func saveIndex(m *Model) { - name := fmt.Sprintf("%x.idx", sha1.Sum([]byte(m.Dir()))) + name := fmt.Sprintf("%x.idx.gz", sha1.Sum([]byte(m.Dir()))) fullName := path.Join(opts.ConfDir, name) idxf, err := os.Create(fullName + ".tmp") if err != nil { return } - protocol.WriteIndex(idxf, m.ProtocolIndex()) + + gzw := gzip.NewWriter(idxf) + + protocol.WriteIndex(gzw, m.ProtocolIndex()) + gzw.Close() idxf.Close() os.Rename(fullName+".tmp", fullName) } func loadIndex(m *Model) { - fname := fmt.Sprintf("%x.idx", sha1.Sum([]byte(m.Dir()))) + fname := fmt.Sprintf("%x.idx.gz", sha1.Sum([]byte(m.Dir()))) idxf, err := os.Open(path.Join(opts.ConfDir, fname)) if err != nil { return } defer idxf.Close() - idx, err := protocol.ReadIndex(idxf) + gzr, err := gzip.NewReader(idxf) + if err != nil { + return + } + defer gzr.Close() + + idx, err := protocol.ReadIndex(gzr) if err != nil { return }