From 1c99aacc88e962d9d4023ee49814ff239eca0aa3 Mon Sep 17 00:00:00 2001 From: can1357 Date: Wed, 18 Mar 2026 23:31:06 +0100 Subject: [PATCH] cut: honor only-delimited in newline-delimiter mode --- src/uu/cut/src/cut.rs | 4 ++-- tests/by-util/test_cut.rs | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/uu/cut/src/cut.rs b/src/uu/cut/src/cut.rs index a0f567d1917..bd5b0924b9f 100644 --- a/src/uu/cut/src/cut.rs +++ b/src/uu/cut/src/cut.rs @@ -260,9 +260,9 @@ fn cut_fields_newline_char_delim( reader: R, out: &mut W, ranges: &[Range], - only_delimited: bool, newline_char: u8, out_delim: &[u8], + only_delimited: bool, ) -> UResult<()> { let mut reader = BufReader::new(reader); let mut line = Vec::new(); @@ -398,9 +398,9 @@ fn cut_fields( reader, out, ranges, - field_opts.only_delimited, newline_char, out_delim, + field_opts.only_delimited, ) } Delimiter::Slice(delim) => { diff --git a/tests/by-util/test_cut.rs b/tests/by-util/test_cut.rs index 36cd1c2e0d0..8d9afd920c4 100644 --- a/tests/by-util/test_cut.rs +++ b/tests/by-util/test_cut.rs @@ -229,6 +229,21 @@ fn test_zero_terminated_only_delimited() { .stdout_only("82\n7\0"); } +#[test] +fn test_suppresses_unterminated_segment() { + new_ucmd!() + .args(&["-z", "-d", "", "-s", "-f", "1"]) + .pipe_in("unterminated") + .succeeds() + .stdout_only_bytes(""); + + new_ucmd!() + .args(&["-z", "-d", "", "-s", "-f", "1"]) + .pipe_in("terminated\0unterminated") + .succeeds() + .stdout_only_bytes("terminated\0"); +} + #[test] fn test_is_a_directory() { let (at, mut ucmd) = at_and_ucmd!();