summaryrefslogtreecommitdiff
path: root/src/reader.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/reader.go')
-rw-r--r--src/reader.go26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/reader.go b/src/reader.go
index d4764119..7496b775 100644
--- a/src/reader.go
+++ b/src/reader.go
@@ -30,9 +30,29 @@ func (r *Reader) ReadSource() {
}
func (r *Reader) feed(src io.Reader) {
- if scanner := bufio.NewScanner(src); scanner != nil {
- for scanner.Scan() {
- r.pusher(scanner.Text())
+ reader := bufio.NewReader(src)
+ eof := false
+Loop:
+ for !eof {
+ buf := []byte{}
+ iter := 0 // TODO: max size?
+ for {
+ // "ReadLine either returns a non-nil line or it returns an error, never both"
+ line, isPrefix, err := reader.ReadLine()
+ eof = err == io.EOF
+ if eof {
+ break
+ } else if err != nil {
+ break Loop
+ }
+ iter++
+ buf = append(buf, line...)
+ if !isPrefix {
+ break
+ }
+ }
+ if iter > 0 {
+ r.pusher(string(buf))
r.eventBox.Set(EvtReadNew, nil)
}
}