diff --git a/src/uu/join/src/join.rs b/src/uu/join/src/join.rs index fdcc5506d..1f784a91c 100644 --- a/src/uu/join/src/join.rs +++ b/src/uu/join/src/join.rs @@ -537,6 +537,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { settings.separator = match value.len() { 0 => Sep::Line, 1 => Sep::Char(value[0]), + 2 if value[0] == b'\\' && value[1] == b'0' => Sep::Char(0), _ => { return Err(USimpleError::new( 1, diff --git a/tests/by-util/test_join.rs b/tests/by-util/test_join.rs index 743eda512..84482ea8e 100644 --- a/tests/by-util/test_join.rs +++ b/tests/by-util/test_join.rs @@ -366,6 +366,17 @@ fn non_unicode() { .stdout_only_fixture("non-unicode.expected"); } +#[test] +fn null_field_separators() { + new_ucmd!() + .arg("-t") + .arg("\\0") + .arg("non-unicode_1.bin") + .arg("non-unicode_2.bin") + .succeeds() + .stdout_only_fixture("null-sep.expected"); +} + #[test] fn null_line_endings() { new_ucmd!() diff --git a/tests/fixtures/join/null-sep.expected b/tests/fixtures/join/null-sep.expected new file mode 100644 index 000000000..7d91c5782 Binary files /dev/null and b/tests/fixtures/join/null-sep.expected differ