aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-07-12 20:05:13 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-07-12 20:05:13 +0200
commite1e897cd7c27d7c598de52be83e3b4764a5c7861 (patch)
treeb3be95e59d668bb31f7c9711590fb87c94aa4a93 /cmd
parenta362f6ae3cb7cf0c9b1aadd5c121726dfe71331b (diff)
ReadAt
Diffstat (limited to 'cmd')
-rw-r--r--cmd/btcheck/main.go43
1 files changed, 42 insertions, 1 deletions
diff --git a/cmd/btcheck/main.go b/cmd/btcheck/main.go
index 38dd16d..f7c6bee 100644
--- a/cmd/btcheck/main.go
+++ b/cmd/btcheck/main.go
@@ -1,3 +1,44 @@
package main
-func main() {}
+import (
+ "fmt"
+ "io/ioutil"
+ "log"
+ "os"
+
+ "dim13.org/btget/bencode"
+ "dim13.org/btget/meta"
+)
+
+func Open(fname string) (meta.Torrent, error) {
+ var tor meta.Torrent
+ body, err := ioutil.ReadFile(fname)
+ if err != nil {
+ return meta.Torrent{}, err
+ }
+ err = bencode.Unmarshal(body, &tor)
+ if err != nil {
+ return meta.Torrent{}, err
+ }
+ return tor, nil
+}
+
+func main() {
+ if len(os.Args) != 2 {
+ log.Fatal("usage: ", os.Args[0], " <torrent>")
+ }
+ tor, err := Open(os.Args[1])
+ if err != nil {
+ log.Fatal(err)
+ }
+ p := tor.Info.GetPieces()
+ buf := make([]byte, tor.Info.PieceLength)
+ for i := 0; i < tor.Info.NPieces(); i++ {
+ off := tor.Info.Offset(i)
+ n, err := tor.Info.ReadAt(buf, off)
+ if err != nil {
+ log.Fatal(err)
+ }
+ fmt.Println(i, off, n, p[i].Check(buf[:n]))
+ }
+}