Added ReaderAtOffset

This commit is contained in:
Caleb Gardner
2022-12-22 02:00:42 -06:00
parent 820e06e792
commit f61237a1f0
3 changed files with 25 additions and 1 deletions
+19
View File
@@ -0,0 +1,19 @@
package toreader
import "io"
type OffsetReader struct {
r io.ReaderAt
off int64
}
func NewOffsetReader(r io.ReaderAt, off int64) *OffsetReader {
return &OffsetReader{
r: r,
off: off,
}
}
func (r OffsetReader) ReadAt(p []byte, off int64) (n int, e error) {
return r.r.ReadAt(p, off+r.off)
}
+2 -1
View File
@@ -6,7 +6,8 @@ type ReaderAt struct {
d []byte
}
func NewReaderAt(r io.Reader) (ra ReaderAt, err error) {
func NewReaderAt(r io.Reader) (ra *ReaderAt, err error) {
ra = new(ReaderAt)
ra.d, err = io.ReadAll(r)
return
}
+4
View File
@@ -40,6 +40,10 @@ const (
ZSTDCompression
)
func NewReaderAtOffset(r io.ReaderAt, off int64) (*Reader, error) {
return NewReader(toreader.NewOffsetReader(r, off))
}
// Creates a new squashfs.Reader from the given io.Reader. NOTE: All data from the io.Reader will be read and stored in memory.
func NewReaderFromReader(r io.Reader) (*Reader, error) {
rdr, err := toreader.NewReaderAt(r)