forked from TrueCloudLab/rclone
23 lines
574 B
Go
23 lines
574 B
Go
|
package readers
|
||
|
|
||
|
import "io"
|
||
|
|
||
|
// LimitedReadCloser adds io.Closer to io.LimitedReader. Create one with NewLimitedReadCloser
|
||
|
type LimitedReadCloser struct {
|
||
|
*io.LimitedReader
|
||
|
io.Closer
|
||
|
}
|
||
|
|
||
|
// NewLimitedReadCloser returns a LimitedReadCloser wrapping rc to
|
||
|
// limit it to reading limit bytes. If limit == 0 then it does not
|
||
|
// wrap rc, it just returns it.
|
||
|
func NewLimitedReadCloser(rc io.ReadCloser, limit int64) (lrc io.ReadCloser) {
|
||
|
if limit == 0 {
|
||
|
return rc
|
||
|
}
|
||
|
return &LimitedReadCloser{
|
||
|
LimitedReader: &io.LimitedReader{R: rc, N: limit},
|
||
|
Closer: rc,
|
||
|
}
|
||
|
}
|