30 lines
533 B
Go
30 lines
533 B
Go
package storage
|
|
|
|
import "github.com/anacrolix/torrent/metainfo"
|
|
|
|
func extentCompleteRequiredLengths(info *metainfo.Info, off, n int64) (ret []metainfo.FileInfo) {
|
|
if n == 0 {
|
|
return
|
|
}
|
|
for _, fi := range info.UpvertedFiles() {
|
|
if off >= fi.Length {
|
|
off -= fi.Length
|
|
continue
|
|
}
|
|
n1 := n
|
|
if off+n1 > fi.Length {
|
|
n1 = fi.Length - off
|
|
}
|
|
ret = append(ret, metainfo.FileInfo{
|
|
Path: fi.Path,
|
|
Length: off + n1,
|
|
})
|
|
n -= n1
|
|
if n == 0 {
|
|
return
|
|
}
|
|
off = 0
|
|
}
|
|
panic("extent exceeds torrent bounds")
|
|
}
|