mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			36 lines
		
	
	
		
			674 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			674 B
		
	
	
	
		
			Go
		
	
	
	
// 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
 | 
						|
}
 |