1234567891011121314151617181920212223242526272829303132333435 |
- // Copyright 2009 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package iotest
- import "io"
- // TruncateWriter returns a Writer that writes to w
- // but stops silently after n bytes.
- func TruncateWriter(w io.Writer, n int64) io.Writer {
- return &truncateWriter{w, n}
- }
- type truncateWriter struct {
- w io.Writer
- n int64
- }
- func (t *truncateWriter) Write(p []byte) (n int, err error) {
- if t.n <= 0 {
- return len(p), nil
- }
- // real write
- n = len(p)
- if int64(n) > t.n {
- n = int(t.n)
- }
- n, err = t.w.Write(p[0:n])
- t.n -= int64(n)
- if err == nil {
- n = len(p)
- }
- return
- }
|