github.com/10XDev/rclone@v1.52.3-0.20200626220027-16af9ab76b2a/lib/readers/limited.go (about) 1 package readers 2 3 import "io" 4 5 // LimitedReadCloser adds io.Closer to io.LimitedReader. Create one with NewLimitedReadCloser 6 type LimitedReadCloser struct { 7 *io.LimitedReader 8 io.Closer 9 } 10 11 // NewLimitedReadCloser returns a LimitedReadCloser wrapping rc to 12 // limit it to reading limit bytes. If limit < 0 then it does not 13 // wrap rc, it just returns it. 14 func NewLimitedReadCloser(rc io.ReadCloser, limit int64) (lrc io.ReadCloser) { 15 if limit < 0 { 16 return rc 17 } 18 return &LimitedReadCloser{ 19 LimitedReader: &io.LimitedReader{R: rc, N: limit}, 20 Closer: rc, 21 } 22 }