func (m *Model) loadIndex(repo string, dir string) []protocol.FileInfo { id := fmt.Sprintf("%x", sha1.Sum([]byte(m.repoDirs[repo]))) name := id + ".idx.gz" name = filepath.Join(dir, name) idxf, err := os.Open(name) if err != nil { return nil } defer idxf.Close() gzr, err := gzip.NewReader(idxf) if err != nil { return nil } defer gzr.Close() var im protocol.IndexMessage err = im.DecodeXDR(gzr) if err != nil || im.Repository != repo { return nil } return im.Files }
func main() { log.SetFlags(0) log.SetOutput(os.Stdout) showBlocks := flag.Bool("b", false, "Show blocks") flag.Parse() name := flag.Arg(0) idxf, err := os.Open(name) if err != nil { log.Fatal(err) } defer idxf.Close() gzr, err := gzip.NewReader(idxf) if err != nil { log.Fatal(err) } defer gzr.Close() var im protocol.IndexMessage err = im.DecodeXDR(gzr) if err != nil { log.Fatal(err) } log.Printf("Repo: %q, Files: %d", im.Repository, len(im.Files)) for _, file := range im.Files { del := file.Flags&protocol.FlagDeleted != 0 inv := file.Flags&protocol.FlagInvalid != 0 dir := file.Flags&protocol.FlagDirectory != 0 prm := file.Flags & 0777 log.Printf("File: %q, Ver:%d, Del: %v, Inv: %v, Dir: %v, Perm: 0%03o, Modified: %d, Blocks: %d", file.Name, file.Version, del, inv, dir, prm, file.Modified, len(file.Blocks)) if *showBlocks { for _, block := range file.Blocks { log.Printf(" Size: %6d, Hash: %x", block.Size, block.Hash) } } } }
func loadIndex(m *Model) { name := m.RepoID() + ".idx.gz" idxf, err := os.Open(path.Join(confDir, name)) if err != nil { return } defer idxf.Close() gzr, err := gzip.NewReader(idxf) if err != nil { return } defer gzr.Close() var im protocol.IndexMessage err = im.DecodeXDR(gzr) if err != nil || im.Repository != "local" { return } m.SeedLocal(im.Files) }