1
0
mirror of https://github.com/zu1k/nali.git synced 2025-01-22 21:29:02 +08:00
nali/pkg/common/scan.go

27 lines
552 B
Go
Raw Permalink Normal View History

package common
import (
"bytes"
)
2022-08-14 22:57:14 +08:00
// ScanLines scan lines but keep the suffix \r and \n
func ScanLines(data []byte, atEOF bool) (advance int, token []byte, err error) {
if atEOF && len(data) == 0 {
return 0, nil, nil
}
if i := bytes.IndexByte(data, '\n'); i >= 0 {
return i + 1, data[:i+1], nil
}
if i := bytes.IndexByte(data, '\r'); i >= 0 {
return i + 1, data[:i+1], nil
}
// If we're at EOF, we have a final, non-terminated line. Return it.
if atEOF {
2022-08-14 22:57:14 +08:00
return len(data), data, nil
}
// Request more data.
return 0, nil, nil
}