From a4e1372451500ddbc6283396a0d7f7d06ce84c45 Mon Sep 17 00:00:00 2001 From: Nathan Ross Date: Tue, 16 Feb 2016 18:44:00 -0500 Subject: [PATCH] cat: squeeze blank keeps up to one blank line --- src/cat/cat.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cat/cat.rs b/src/cat/cat.rs index c12eb4035..e612a506c 100644 --- a/src/cat/cat.rs +++ b/src/cat/cat.rs @@ -101,6 +101,7 @@ fn write_lines(files: Vec, number: NumberingMode, squeeze_blank: bool, let mut out_buf = [0; 1024 * 64]; let mut writer = UnsafeWriter::new(&mut out_buf[..], stdout()); let mut at_line_start = true; + let mut one_blank_kept = false; while let Ok(n) = reader.read(&mut in_buf) { if n == 0 { break } @@ -113,7 +114,8 @@ fn write_lines(files: Vec, number: NumberingMode, squeeze_blank: bool, None => break, }; if in_buf[pos] == '\n' as u8 { - if !at_line_start || !squeeze_blank { + if !at_line_start || !squeeze_blank || !one_blank_kept { + one_blank_kept = true; if at_line_start && number == NumberingMode::NumberAll { (write!(&mut writer, "{0:6}\t", line_counter)).unwrap(); line_counter += 1; @@ -128,6 +130,8 @@ fn write_lines(files: Vec, number: NumberingMode, squeeze_blank: bool, } at_line_start = true; continue; + } else if one_blank_kept { + one_blank_kept = false; } if at_line_start && number != NumberingMode::NumberNone { (write!(&mut writer, "{0:6}\t", line_counter)).unwrap();