aboutsummaryrefslogtreecommitdiff
path: root/src/bufio
AgeCommit message (Collapse)Author
2019-03-02bufio: fix emptyFinalToken example to handle multiple ReadsAgniva De Sarker
Fixes #25909 Change-Id: I9a53a1a06aab5d1877a8e9b1b8b782d77d6027a8 Reviewed-on: https://go-review.googlesource.com/c/157758 Reviewed-by: Bryan C. Mills <bcmills@google.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2019-01-08bufio: document relationship between UnreadByte/UnreadRune and PeekBrad Fitzpatrick
Fixes #29387 Change-Id: I2d9981f63ac16630ed39d6da6692c81396f4e9ea Reviewed-on: https://go-review.googlesource.com/c/155930 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2018-11-13bufio: make Reader.Peek invalidate UnreadsMartin Garton
Since Reader.Peek potentially reads from the underlying io.Reader, discarding previous buffers, UnreadRune and UnreadByte cannot necessarily work. Change Peek to invalidate the unread buffers in all cases (as allowed according to the documentation) and thus prevent hiding bugs in the caller. (This change was previoiusly merged and then reverted due concern about being too close to a release) Fixes #18556 Change-Id: I9027d75aa834d4b27703f37711ba25de04d89f3c GitHub-Last-Rev: 917ef1e51131d734f92efc946a0ab5ca4ff69be6 GitHub-Pull-Request: golang/go#28768 Reviewed-on: https://go-review.googlesource.com/c/149297 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2018-11-13bufio: put notes about len(p) togetherRuss Cox
CL 145577 added the part about io.ReadFull to read len(p) but it should be next to the existing sentence about not reading len(p) bytes. Change-Id: Idfa037c59a3085d44d5da6129188473db0e96d23 Reviewed-on: https://go-review.googlesource.com/c/148903 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com>
2018-11-09bufio: fix indexes in TestWriterRyan Dahl
Change-Id: I393c53d6f7b526d156226502544725a4cb9fb118 GitHub-Last-Rev: 5d53406c70ebbbbedd7650b9f43c873ead63c184 GitHub-Pull-Request: golang/go#28693 Reviewed-on: https://go-review.googlesource.com/c/148818 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2018-10-30bufio: suggest io.ReadFull at (*Reader).ReadAlan Donovan
Many times when using bufio.Reader I imagine, incorrectly, that it implements the retry loop itself, being a high-level buffered wrapper around, say, a file descriptor prone to short reads. This comment would have saved me much time. Change-Id: I34c790e0d7c1515430a76d02ce4739b586a36ba7 Reviewed-on: https://go-review.googlesource.com/c/145577 Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Rob Pike <r@golang.org>
2018-08-22bufio: avoid rescanning buffer multiple times in ReadSliceandrius4669
When existing data in buffer does not have delimiter, and new data is added with b.fill(), continue search from previous point instead of starting from beginning. Change-Id: Id78332afe2b0281b4a3c86bd1ffe9449cfea7848 GitHub-Last-Rev: 08e7d2f50151a00b22800e3f7020d0de8dee7dcf GitHub-Pull-Request: golang/go#25441 Reviewed-on: https://go-review.googlesource.com/113535 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2018-08-20bufio: make Reader naming consistentnogoegst
All the readers are denoted as `b` while for `Reader.Size()` it is `r`. Change-Id: Ib6f97306c11b3abb2ff30edbc9f9362cad36d080 GitHub-Last-Rev: 992f88b374b5a309303b7fa1622ee629d0fb741b GitHub-Pull-Request: golang/go#26205 Reviewed-on: https://go-review.googlesource.com/122156 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2018-06-13bufio: clarify SplitFunc docs for nil tokenIan Lance Taylor
Fixes #25472 Change-Id: Idb72ed06a3dc43c49ab984a80f8885352b036465 Reviewed-on: https://go-review.googlesource.com/118695 Reviewed-by: Rob Pike <r@golang.org>
2018-03-28bufio: document ReadFrom/WriteTo calls to underlying methodsIan Lance Taylor
In general use of these magic methods must be documented so that users understand what will happen. Fixes #23289 Change-Id: Ic46915eee1d3b7e57d8d1886834ddfb2e8e66e62 Reviewed-on: https://go-review.googlesource.com/103238 Reviewed-by: Rob Pike <r@golang.org>
2017-11-14bufio: Use maxConsecutiveEmptyReads instead of 100Ryoichi KATO
Use maxConsecutiveEmptyReads const instead of hardcoded 100 in scan.go too. Change-Id: I993f353a3748f0d6bdefab38bf5cb224eea8a969 Reviewed-on: https://go-review.googlesource.com/46915 Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-11-02bufio: add Reader.Size and Writer.Size accessorsBrad Fitzpatrick
Fixes #21343 Change-Id: I3582fced902592fe12bfa29acf7b40b6e5e554a7 Reviewed-on: https://go-review.googlesource.com/75150 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
2017-07-06Revert "bufio: make Reader.Peek invalidate Unreads"Russ Cox
Go 1.9 beta 2 is already out. It's too late to break code with a change like this. This can be rolled forward for Go 1.10. This reverts commit ae238688d2813e83f16050408487ea34ba1c2fff. Change-Id: Ib67b8629e3deac5d50d76581aba6a91ca7a7853e Reviewed-on: https://go-review.googlesource.com/47570 Reviewed-by: Russ Cox <rsc@golang.org>
2017-06-27bufio: make Reader.Peek invalidate UnreadsMartin Garton
Since Reader.Peek potentially reads from the underlying io.Reader, discarding previous buffers, UnreadRune and UnreadByte cannot necessarily work. Change Peek to invalidate the unread buffers in all cases (as allowed according to the documentation) and thus prevent hiding bugs in the caller. Fixes #18556 Change-Id: I8d836db7ce31c4aaecb4f61c24573b0332bbf30d Reviewed-on: https://go-review.googlesource.com/46850 Reviewed-by: Robert Griesemer <gri@golang.org>
2017-06-09all: single space after periodBrad Fitzpatrick
Done with grep & interactive search & replace, to double-check replacements. Not many remained after CL 20022. Fixes #18572 Change-Id: Idbe90ba3b584f9b9661d2bbd141607daaadfa41a Reviewed-on: https://go-review.googlesource.com/45270 Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2017-06-08bufio: clarify WriteTo docsSam Whited
Fixes #19092 Change-Id: I7c0fde6a4cf460017619dbcce1c1ddaa7af1022a Reviewed-on: https://go-review.googlesource.com/44811 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-04-21bufio: clarify that Flush returns a cached write errorIan Lance Taylor
Change-Id: I377403fc0981d58aec5d84a1dd0d4e08532a575c Reviewed-on: https://go-review.googlesource.com/41291 Reviewed-by: Dan Peterson <dpiddy@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-04-19all: remove redundant returnsDaniel Martí
Returns at the end of func bodies where the funcs have no return values are pointless. Change-Id: I0da5ea78671503e41a9f56dd770df8c919310ce5 Reviewed-on: https://go-review.googlesource.com/41093 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-10-24bufio: remove unnecessary "continue"Quentin Smith
After resizing the scan buffer, we can immediately read into the newly-resized buffer since we know there is now space. Fixes #15712. Change-Id: I56fcfaeb67045ee753a012c37883aa7c81b6e877 Reviewed-on: https://go-review.googlesource.com/31715 Run-TryBot: Quentin Smith <quentin@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2016-10-18bufio: read from underlying reader at most once in ReadRuss Cox
Fixes #17059. Change-Id: I5c7ee46604399f7dc3c3c49f964cbb1aa6c0d621 Reviewed-on: https://go-review.googlesource.com/31320 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-10-01bufio: remove redundant Writer.flush methodMatt Layher
Fixes #17232 Change-Id: I34df86f79b643dce9f054c6df6782e6037c06910 Reviewed-on: https://go-review.googlesource.com/30158 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-05-06all: use SeekStart, SeekCurrent, SeekEndJoe Tsai
CL/19862 (f79b50b8d5bc159561c1dcf7c17e2a0db96a9a11) recently introduced the constants SeekStart, SeekCurrent, and SeekEnd to the io package. We should use these constants consistently throughout the code base. Updates #15269 Change-Id: If7fcaca7676e4a51f588528f5ced28220d9639a2 Reviewed-on: https://go-review.googlesource.com/22097 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Joe Tsai <joetsai@digital-static.net> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-04-10all: replace magic 0x80 with named constant utf8.RuneSelfMartin Möhrmann
Change-Id: Id1c2e8e9d60588de866e8b6ca59cc83dd28f848f Reviewed-on: https://go-review.googlesource.com/21756 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-03-21all: delete dead test codeDominik Honnef
This deletes unused code and helpers from tests. Change-Id: Ie31d46115f558ceb8da6efbf90c3c204e03b0d7e Reviewed-on: https://go-review.googlesource.com/20927 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-03-04bufio: Reader.Peek returns partial results on ErrBufferFulldjherbis
The existing implementation returns nil, ErrBufferFull when n > len(b.buf), now it will return any data in the buffer and ErrBufferFull. Fixes #14121 Change-Id: Ie52d32ccd80e4078ebfae6e75393c89675959ead Reviewed-on: https://go-review.googlesource.com/19091 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
2016-03-02all: single space after period.Brad Fitzpatrick
The tree's pretty inconsistent about single space vs double space after a period in documentation. Make it consistently a single space, per earlier decisions. This means contributors won't be confused by misleading precedence. This CL doesn't use go/doc to parse. It only addresses // comments. It was generated with: $ perl -i -npe 's,^(\s*// .+[a-z]\.) +([A-Z]),$1 $2,' $(git grep -l -E '^\s*//(.+\.) +([A-Z])') $ go test go/doc -update Change-Id: Iccdb99c37c797ef1f804a94b22ba5ee4b500c4f7 Reviewed-on: https://go-review.googlesource.com/20022 Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Dave Day <djd@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-02-29all: remove public named return values when uselessBrad Fitzpatrick
Named returned values should only be used on public funcs and methods when it contributes to the documentation. Named return values should not be used if they're only saving the programmer a few lines of code inside the body of the function, especially if that means there's stutter in the documentation or it was only there so the programmer could use a naked return statement. (Naked returns should not be used except in very small functions) This change is a manual audit & cleanup of public func signatures. Signatures were not changed if: * the func was private (wouldn't be in public godoc) * the documentation referenced it * the named return value was an interesting name. (i.e. it wasn't simply stutter, repeating the name of the type) There should be no changes in behavior. (At least: none intended) Change-Id: I3472ef49619678fe786e5e0994bdf2d9de76d109 Reviewed-on: https://go-review.googlesource.com/20024 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
2016-02-24all: fix typos and spellingMartin Möhrmann
Change-Id: Icd06d99c42b8299fd931c7da821e1f418684d913 Reviewed-on: https://go-review.googlesource.com/19829 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2015-12-01bufio: clarify Read docsRuss Cox
Or at least make them true. Fixes #12237. Change-Id: I3c92a07233b2174c5731d6fa7fbb9ca3a97beb6b Reviewed-on: https://go-review.googlesource.com/17237 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2015-09-25bufio: fix scanning with a final empty token.Rob Pike
The Scan function's interface to the split function was not sufficient to handle an empty final token in a pure function; state was required. This was ugly. We introduce a special error value that a split function can return that signals that this token is OK, but is the last one and scanning should stop immediately _after_ this token. The same effect could be achieved using the same trick (a special error value) and checking for that error after Scan finishes, but it's a little clumsy. Providing a published sentinel value in bufio is cleaner and means everyone can use the same trick. The result is an error-free scan. Rewrite the test (that was only barely working) to use the value and be more robust. Also write a new example showing how to do it. Fixes #11836 Change-Id: Iaae77d0f95b4a2efa0175ced94d93c66353079e8 Reviewed-on: https://go-review.googlesource.com/14924 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2015-09-20bufio: fix overflow calculation in ScanRob Pike
I was being too clever, as usual. Write the obvious code to make sure that when we grow the buffer we don't overflow. Change-Id: I1641831177b0bb8a89ab6e9bcabccf6c2fcfe1d2 Reviewed-on: https://go-review.googlesource.com/14781 Reviewed-by: Minux Ma <minux@golang.org>
2015-09-18bufio: allow Scanner to accept a user-provided bufferRob Pike
Add Scanner.Buffer, which lets the user give a buffer to the scanner and set the maximum token size. We call it Buffer not SetBuffer for consistency with Split, which perhaps should have been called SetSplit; too late regardless. Both Buffer and Split panic if they are called after Scan. The panic in Split is new, but the comment on the method already said it needed to be called first, so we might as well add the verification while we're doing it for Buffer. This method allows precise user control of storage. Fixes #11702. Change-Id: I80e3d0e3830562fdabd4f7b08f322e1378248c39 Reviewed-on: https://go-review.googlesource.com/14599 Reviewed-by: Andrew Gerrand <adg@golang.org> Reviewed-by: roger peppe <rogpeppe@gmail.com>
2015-07-18bufio: Remove unneeded error initializationSilvan Jegen
The default value for error is nil so there is no need to assign this value here. Change-Id: I4714ef7607996ccbf91b704390e1d1d39ee3847b Reviewed-on: https://go-review.googlesource.com/12355 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2015-03-18bufio: fix incorrect comment on Scanner.ScanAaron Jacobs
Change-Id: I216511a4bce431de0a468f618a7a7c4da79e2979 Reviewed-on: https://go-review.googlesource.com/7710 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2015-01-07bufio: add Reader.DiscardBrad Fitzpatrick
Reader.Discard is the complement to Peek. It discards the next n bytes of input. We already have Reader.Buffered to see how many bytes of data are sitting available in memory, and Reader.Peek to get that that buffer directly. But once you're done with the Peek'd data, you can't get rid of it, other than Reading it. Both Read and io.CopyN(ioutil.Discard, bufReader, N) are relatively slow. People instead resort to multiple blind ReadByte calls, just to advance the internal b.r variable. I've wanted this previously, several people have asked for it in the past on golang-nuts/dev, and somebody just asked me for it again in a private email. There are a few places in the standard library we'd use it too. Change-Id: I85dfad47704a58bd42f6867adbc9e4e1792bc3b0 Reviewed-on: https://go-review.googlesource.com/2260 Reviewed-by: Russ Cox <rsc@golang.org>
2014-11-06bufio: remove unused 'panicked' variable from testAndrew Gerrand
LGTM=r R=r CC=golang-codereviews https://golang.org/cl/166230044
2014-11-05bufio: fix reading of many blank lines in a rowRuss Cox
Fixes #9020. LGTM=bradfitz, r R=r, bradfitz CC=golang-codereviews https://golang.org/cl/170030043
2014-11-06bufio: don't loop generating empty tokensRob Pike
The new rules for split functions mean that we are exposed to the common bug of a function that loops forever at EOF. Pick these off by shutting down the scanner if too many consecutive empty tokens are delivered. Fixes #9020. LGTM=rsc, adg R=golang-codereviews, rsc, adg, bradfitz CC=golang-codereviews https://golang.org/cl/169970043
2014-09-25bufio: fix handling of empty tokens at end of line/fileRob Pike
Fixes #8672. LGTM=rsc R=golang-codereviews, rsc CC=golang-codereviews https://golang.org/cl/145390043
2014-09-08build: move package sources from src/pkg to srcRuss Cox
Preparation was in CL 134570043. This CL contains only the effect of 'hg mv src/pkg/* src'. For more about the move, see golang.org/s/go14nopkg.