github.com/rclone/rclone@v1.66.1-0.20240517100346-7b89735ae726/cmd/serve/s3/ioutils.go (about) 1 package s3 2 3 import "io" 4 5 type noOpReadCloser struct{} 6 7 type readerWithCloser struct { 8 io.Reader 9 closer func() error 10 } 11 12 var _ io.ReadCloser = &readerWithCloser{} 13 14 func (d noOpReadCloser) Read(b []byte) (n int, err error) { 15 return 0, io.EOF 16 } 17 18 func (d noOpReadCloser) Close() error { 19 return nil 20 } 21 22 func limitReadCloser(rdr io.Reader, closer func() error, sz int64) io.ReadCloser { 23 return &readerWithCloser{ 24 Reader: io.LimitReader(rdr, sz), 25 closer: closer, 26 } 27 } 28 29 func (rwc *readerWithCloser) Close() error { 30 if rwc.closer != nil { 31 return rwc.closer() 32 } 33 return nil 34 }