From a362f6ae3cb7cf0c9b1aadd5c121726dfe71331b Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 11 Jul 2016 18:59:27 +0200 Subject: wip --- meta/info.go | 11 ++++++++++- meta/torrent_test.go | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'meta') 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) -- cgit v1.2.3