Added ReaderAtOffset
This commit is contained in:
@@ -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)
|
||||||
|
}
|
||||||
@@ -6,7 +6,8 @@ type ReaderAt struct {
|
|||||||
d []byte
|
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)
|
ra.d, err = io.ReadAll(r)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,10 @@ const (
|
|||||||
ZSTDCompression
|
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.
|
// 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) {
|
func NewReaderFromReader(r io.Reader) (*Reader, error) {
|
||||||
rdr, err := toreader.NewReaderAt(r)
|
rdr, err := toreader.NewReaderAt(r)
|
||||||
|
|||||||
Reference in New Issue
Block a user