Adding upstream version 1.2.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
6a5b4a9666
commit
82a6c39bcf
24 changed files with 2727 additions and 0 deletions
31
limio/limit.go
Normal file
31
limio/limit.go
Normal file
|
@ -0,0 +1,31 @@
|
|||
package limio
|
||||
|
||||
import "io"
|
||||
|
||||
type limitedWriter struct {
|
||||
W io.Writer
|
||||
N int64
|
||||
}
|
||||
|
||||
func (l *limitedWriter) Write(p []byte) (n int, err error) {
|
||||
if l.N <= 0 {
|
||||
return 0, io.ErrShortWrite
|
||||
}
|
||||
if int64(len(p)) > l.N {
|
||||
p = p[0:l.N]
|
||||
err = io.ErrShortWrite
|
||||
}
|
||||
n, er := l.W.Write(p)
|
||||
if er != nil {
|
||||
err = er
|
||||
}
|
||||
l.N -= int64(n)
|
||||
return n, err
|
||||
}
|
||||
|
||||
// LimitWriter works like io.LimitReader. It writes at most n bytes
|
||||
// to the underlying Writer. It returns io.ErrShortWrite if more than n
|
||||
// bytes are attempted to be written.
|
||||
func LimitWriter(w io.Writer, n int64) io.Writer {
|
||||
return &limitedWriter{W: w, N: n}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue