浏览代码

Debug utility to print index file

Jakob Borg 11 年之前
父节点
当前提交
07d49b61d0
共有 1 个文件被更改,包括 52 次插入0 次删除
  1. 52 0
      cmd/stpidx/main.go

+ 52 - 0
cmd/stpidx/main.go

@@ -0,0 +1,52 @@
+package main
+
+import (
+	"compress/gzip"
+	"flag"
+	"log"
+	"os"
+
+	"github.com/calmh/syncthing/protocol"
+)
+
+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, Del: %v, Inv: %v, Dir: %v, Perm: 0%03o, Modified: %d, Blocks: %d",
+			file.Name, 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)
+			}
+		}
+	}
+}