mirror of
https://github.com/mjl-/mox.git
synced 2025-07-10 07:54:40 +03:00
mox!
This commit is contained in:
27
moxio/limitreader.go
Normal file
27
moxio/limitreader.go
Normal file
@ -0,0 +1,27 @@
|
||||
package moxio
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"io"
|
||||
)
|
||||
|
||||
var ErrLimit = errors.New("input exceeds maximum size") // Returned by LimitReader.
|
||||
|
||||
// LimitReader reads up to Limit bytes, returning an error if more bytes are
|
||||
// read. LimitReader can be used to enforce a maximum input length.
|
||||
type LimitReader struct {
|
||||
R io.Reader
|
||||
Limit int64
|
||||
}
|
||||
|
||||
// Read reads bytes from the underlying reader.
|
||||
func (r *LimitReader) Read(buf []byte) (int, error) {
|
||||
n, err := r.R.Read(buf)
|
||||
if n > 0 {
|
||||
r.Limit -= int64(n)
|
||||
if r.Limit < 0 {
|
||||
return 0, ErrLimit
|
||||
}
|
||||
}
|
||||
return n, err
|
||||
}
|
Reference in New Issue
Block a user