package generic import "io" // io.CopyBuffer has extra tests for interface like io.ReaderFrom and io.WriterTo // which is not efficient in memory management from tests func CopyBuffer(dst io.Writer, src io.Reader, buf []byte) (written int64, err error) { if buf != nil && len(buf) == 0 { panic("empty buffer in copyBuffer") } for { nr, er := src.Read(buf) if nr > 0 { nw, ew := dst.Write(buf[0:nr]) if nw > 0 { written += int64(nw) } if ew != nil { err = ew break } if nr != nw { err = io.ErrShortWrite break } } if er != nil { if er != io.EOF { err = er } break } } return written, err }