give bufio.Writer.WriteString the same signature as

bytes.Buffer.WriteString

Fixes #535.

R=rsc
CC=golang-dev
https://golang.org/cl/189096
This commit is contained in:
Rob Pike 2010-01-16 13:06:50 +11:00
parent 32e2ae0b18
commit 11b459cba8

View File

@ -387,7 +387,7 @@ func (b *Writer) Buffered() int { return b.n }
// Write writes the contents of p into the buffer. // Write writes the contents of p into the buffer.
// It returns the number of bytes written. // It returns the number of bytes written.
// If nn < len(p), also returns an error explaining // If nn < len(p), it also returns an error explaining
// why the write is short. // why the write is short.
func (b *Writer) Write(p []byte) (nn int, err os.Error) { func (b *Writer) Write(p []byte) (nn int, err os.Error) {
if b.err != nil { if b.err != nil {
@ -438,9 +438,12 @@ func (b *Writer) WriteByte(c byte) os.Error {
} }
// WriteString writes a string. // WriteString writes a string.
func (b *Writer) WriteString(s string) os.Error { // It returns the number of bytes written.
// If the count is less than len(s), it also returns an error explaining
// why the write is short.
func (b *Writer) WriteString(s string) (int, os.Error) {
if b.err != nil { if b.err != nil {
return b.err return 0, b.err
} }
// Common case, worth making fast. // Common case, worth making fast.
if b.Available() >= len(s) || len(b.buf) >= len(s) && b.Flush() == nil { if b.Available() >= len(s) || len(b.buf) >= len(s) && b.Flush() == nil {
@ -448,12 +451,15 @@ func (b *Writer) WriteString(s string) os.Error {
b.buf[b.n] = s[i] b.buf[b.n] = s[i]
b.n++ b.n++
} }
return nil return len(s), nil
} }
for i := 0; i < len(s); i++ { // loop over bytes, not runes. for i := 0; i < len(s); i++ { // loop over bytes, not runes.
b.WriteByte(s[i]) b.WriteByte(s[i])
if b.err != nil {
return i, b.err
}
} }
return b.err return len(s), nil
} }
// buffered input and output // buffered input and output