aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-07-11 18:59:27 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-07-11 18:59:27 +0200
commita362f6ae3cb7cf0c9b1aadd5c121726dfe71331b (patch)
tree7f89e37aee224e818c14d5b93bb331a3e63bea41
parent54ccf5928b96aeff56f75a9b80cf0e227294941e (diff)
wip
-rw-r--r--meta/info.go11
-rw-r--r--meta/torrent_test.go2
2 files changed, 11 insertions, 2 deletions
diff --git a/meta/info.go b/meta/info.go
index 5ec35a7..d4b19bc 100644
--- a/meta/info.go
+++ b/meta/info.go
@@ -41,6 +41,13 @@ func (i Info) TotalLength() int64 {
return i.Length
}
+func (i Info) FileLength(n int) int64 {
+ if len(i.Files) == 0 {
+ return i.Length
+ }
+ return i.Files[n].Length
+}
+
func (i Info) GetPieces() []Piece {
n, last := i.Full(), i.Last()
if last > 0 {
@@ -122,8 +129,9 @@ func (i Info) ReadAt(b []byte, off int64) (n int, err error) {
}
defer fd.Close()
- flen := i.Files[n].Length
+ flen := i.FileLength(n)
+ // does it fit?
if int64(len(b))+foff <= flen {
return fd.ReadAt(b, foff)
}
@@ -135,6 +143,7 @@ func (i Info) ReadAt(b []byte, off int64) (n int, err error) {
return done, err
}
next, err := i.ReadAt(b[end:], end)
+
return done + next, err
}
diff --git a/meta/torrent_test.go b/meta/torrent_test.go
index 75cccc9..19ab6cd 100644
--- a/meta/torrent_test.go
+++ b/meta/torrent_test.go
@@ -49,7 +49,7 @@ func TestPieces2(t *testing.T) {
}
func TestReadAt(t *testing.T) {
- t.Skip()
+ //t.Skip()
tor, err := Open("../examples/" + tors["bsd"])
if err != nil {
t.Error(err)