83dfa77b7d
Performance is still not great, but better
23 lines
461 B
Go
23 lines
461 B
Go
package squashfs
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/CalebQ42/squashfs/internal/toreader"
|
|
)
|
|
|
|
type fragEntry struct {
|
|
Start uint64
|
|
Size uint32
|
|
_ uint32
|
|
}
|
|
|
|
func (r Reader) fragReader(index uint32) (io.Reader, error) {
|
|
realSize := r.fragEntries[index].Size &^ (1 << 24)
|
|
rdr := io.LimitReader(toreader.NewReader(r.r, int64(r.fragEntries[index].Start)), int64(realSize))
|
|
if realSize != r.fragEntries[index].Size {
|
|
return rdr, nil
|
|
}
|
|
return r.d.Reader(rdr)
|
|
}
|