fix line count for files that don't end in a newline
Signed-off-by: Derek Stevens <nilix@nilfm.cc>
This commit is contained in:
parent
ee5ab32a40
commit
ee800624f5
|
@ -45,15 +45,23 @@ func (d *deps) listFiles(files []git.NiceTree, data map[string]any, w http.Respo
|
||||||
|
|
||||||
func countLines(r io.Reader) (int, error) {
|
func countLines(r io.Reader) (int, error) {
|
||||||
buf := make([]byte, 32*1024)
|
buf := make([]byte, 32*1024)
|
||||||
|
bufLen := 0
|
||||||
count := 0
|
count := 0
|
||||||
nl := []byte{'\n'}
|
nl := []byte{'\n'}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
c, err := r.Read(buf)
|
c, err := r.Read(buf)
|
||||||
|
if c > 0 {
|
||||||
|
bufLen += c
|
||||||
|
}
|
||||||
count += bytes.Count(buf[:c], nl)
|
count += bytes.Count(buf[:c], nl)
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case err == io.EOF:
|
case err == io.EOF:
|
||||||
|
/* handle last line not having a newline at the end */
|
||||||
|
if bufLen >= 1 && buf[bufLen-1] != '\n' {
|
||||||
|
count++
|
||||||
|
}
|
||||||
return count, nil
|
return count, nil
|
||||||
case err != nil:
|
case err != nil:
|
||||||
return 0, err
|
return 0, err
|
||||||
|
|
Loading…
Reference in New Issue