1
0
mirror of https://github.com/sharkdp/bat synced 2026-07-27 17:41:42 +00:00

Handle line with invalid UTF-8

This commit is contained in:
Ezinwa Okpoechi
2018-05-18 11:56:25 +02:00
committed by David Peter
parent d0782ef954
commit 12cb438aa4
2 changed files with 14 additions and 30 deletions
+8 -23
View File
@@ -162,30 +162,15 @@ fn print_file(
printer.print_header(filename)?;
let mut line_nr = 1;
let mut line_buffer = String::new();
loop {
line_buffer.clear();
let num_bytes = reader.read_line(&mut line_buffer);
let mut buffer = Vec::new();
while reader.read_until(b'\n', &mut buffer)? > 0 {
{
let line = String::from_utf8_lossy(&buffer);
let regions = highlighter.highlight(line.as_ref());
let line = match num_bytes {
Ok(0) => {
break;
}
Ok(_) => {
if !line_buffer.ends_with('\n') {
line_buffer.push('\n');
}
&line_buffer
}
Err(_) => "<bat: INVALID UTF-8>\n",
};
let regions = highlighter.highlight(line);
printer.print_line(line_nr, &regions)?;
line_nr += 1;
printer.print_line(&regions)?;
}
buffer.clear();
}
printer.print_footer()?;