diff --git a/src/uu/join/src/join.rs b/src/uu/join/src/join.rs index a338a22c4e6..da0da784b7b 100644 --- a/src/uu/join/src/join.rs +++ b/src/uu/join/src/join.rs @@ -524,6 +524,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 4b2d1bbbaee..2cd07787dfb 100644 --- a/tests/by-util/test_join.rs +++ b/tests/by-util/test_join.rs @@ -347,6 +347,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 00000000000..7d91c578215 Binary files /dev/null and b/tests/fixtures/join/null-sep.expected differ