cid string
}
-func CopyPipeToChan(in io.Reader, out chan string, done chan<- bool) {
+func CopyPipeToChan(in io.ReadCloser, out chan string, done chan<- bool) {
+ defer in.Close()
+
+ // TODO(twp): handle long input records gracefully, if possible
+ // without killing the child task (#4889)
+ //
s := bufio.NewScanner(in)
for s.Scan() {
out <- s.Text()
}
+ if s.Err() != nil {
+ out <- fmt.Sprintf("crunchstat: line buffering error: %s", s.Err())
+ }
done <- true
}
}
var logChan chan string
+
func LogPrintf(format string, args ...interface{}) {
if logChan == nil {
return
}
- logChan <- fmt.Sprintf("crunchstat: " + format, args...)
+ logChan <- fmt.Sprintf("crunchstat: "+format, args...)
}
func ReadAllOrWarn(in *os.File) ([]byte, error) {