diff --git a/src/uu/expand/src/expand.rs b/src/uu/expand/src/expand.rs index 8ba9d74db..4377f3083 100644 --- a/src/uu/expand/src/expand.rs +++ b/src/uu/expand/src/expand.rs @@ -348,7 +348,16 @@ fn next_tabstop(tabstops: &[usize], col: usize, remaining_mode: &RemainingMode) match remaining_mode { RemainingMode::Plus => match tabstops[0..num_tabstops - 1].iter().find(|&&t| t > col) { Some(t) => t - col, - None => tabstops[num_tabstops - 1] - 1, + None => { + let step_size = tabstops[num_tabstops - 1]; + let last_before_repeating = tabstops[num_tabstops-2]; + let mut r = last_before_repeating+step_size; + + while col >= r { + r += step_size; + } + r - col + } }, RemainingMode::Slash => match tabstops[0..num_tabstops - 1].iter().find(|&&t| t > col) { Some(t) => t - col, @@ -376,7 +385,7 @@ enum CharType { fn expand(options: &Options) -> std::io::Result<()> { use self::CharType::*; - println!("{:?}", options); + let mut output = BufWriter::new(stdout()); let ts = options.tabstops.as_ref(); let mut buf = Vec::new(); diff --git a/tests/by-util/test_expand.rs b/tests/by-util/test_expand.rs index c4da7503f..d4fbf9f95 100644 --- a/tests/by-util/test_expand.rs +++ b/tests/by-util/test_expand.rs @@ -353,7 +353,17 @@ fn test_ignore_initial_plus_slash_combination() { fn test_comma_with_plus_and_multi_character_values() { new_ucmd!() .args(&["--tabs=3,+6"]) - .pipe_in("\taaa\tbbbb\tcccc") + .pipe_in("\taaa\tbbb\tccc") + .succeeds() + // 01234567890 + .stdout_is(" aaa bbb ccc"); +} + +#[test] +fn test_comma_with_plus_and_multi_character_values() { + new_ucmd!() + .args(&["--tabs=3,+6"]) + .pipe_in("\taaa\tbbb\tccc") .succeeds() // 01234567890 .stdout_is(" aaa bbb ccc");