diff --git a/check.go b/check.go index 1586436..9a983a0 100644 --- a/check.go +++ b/check.go @@ -70,24 +70,29 @@ func streams(files []string) chan input { return r } +func fileRead(j chan work, stream input) { + if stream.err != nil { + j <- work{err: stream.err} + //break + return + } + s := bufio.NewScanner(stream.f) + for s.Scan() { + cs, err := parseCS(s.Text()) + j <- work{cs, err} + } + stream.f.Close() + if s.Err() != nil { + j <- work{err: s.Err()} + } +} + func check(files []string) chan error { jobs := make(chan work) go func() { for stream := range streams(files) { - if stream.err != nil { - jobs <- work{err: stream.err} - break - } - s := bufio.NewScanner(stream.f) - for s.Scan() { - cs, err := parseCS(s.Text()) - jobs <- work{cs, err} - } - stream.f.Close() - if s.Err() != nil { - jobs <- work{err: s.Err()} - } + go fileRead(jobs, stream) } close(jobs) }()