diff --git a/src/uu/fold/src/fold.rs b/src/uu/fold/src/fold.rs index 75d007dce..05f0725ef 100644 --- a/src/uu/fold/src/fold.rs +++ b/src/uu/fold/src/fold.rs @@ -97,9 +97,9 @@ fn fold(filenames: Vec, bytes: bool, spaces: bool, width: usize) { } #[inline] -fn fold_file(mut file: BufReader, bytes: bool, spaces: bool, width: usize) { - let mut line = String::new(); - while safe_unwrap!(file.read_line(&mut line)) > 0 { +fn fold_file(file: BufReader, bytes: bool, spaces: bool, width: usize) { + for line_result in file.lines() { + let mut line = safe_unwrap!(line_result); if bytes { let len = line.len(); let mut i = 0; @@ -194,11 +194,7 @@ fn fold_file(mut file: BufReader, bytes: bool, spaces: bool, width: output.push(ch); } if count > 0 { - if newline { - println!("{}", output); - } else { - print!("{}", output); - } + println!("{}", output); } } } diff --git a/tests/by-util/test_fold.rs b/tests/by-util/test_fold.rs index 57f90cee0..c17f300d2 100644 --- a/tests/by-util/test_fold.rs +++ b/tests/by-util/test_fold.rs @@ -23,3 +23,11 @@ fn test_40_column_word_boundary() { .run() .stdout_is_fixture("lorem_ipsum_40_column_word.expected"); } + +#[test] +fn test_default_warp_with_newlines() { + new_ucmd!() + .arg("lorem_ipsum_new_line.txt") + .run() + .stdout_is_fixture("lorem_ipsum_new_line_80_column.expected"); +} diff --git a/tests/fixtures/fold/lorem_ipsum_new_line.txt b/tests/fixtures/fold/lorem_ipsum_new_line.txt new file mode 100644 index 000000000..a844b83d7 --- /dev/null +++ b/tests/fixtures/fold/lorem_ipsum_new_line.txt @@ -0,0 +1,2 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc interdum suscipit sem vel ornare. Proin euismod, justo sed mollis dictum, eros urna ultricies augue, eu pharetra mi ex id ante. Duis convallis porttitor aliquam. Nunc vitae tincidunt ex. Suspendisse iaculis ligula ac diam consectetur lacinia. Donec vel velit dui. Etiam fringilla, dolor quis tempor vehicula, lacus turpis bibendum velit, et pellentesque elit odio a magna. +Cras vulputate tortor non libero vehicula euismod. Aliquam tincidunt nisl eget enim cursus, viverra sagittis magna commodo. Cras rhoncus egestas leo nec blandit. Suspendisse potenti. Etiam ullamcorper leo vel lacus vestibulum, cursus semper eros efficitur. In hac habitasse platea dictumst. Phasellus scelerisque vehicula fringilla. diff --git a/tests/fixtures/fold/lorem_ipsum_new_line_80_column.expected b/tests/fixtures/fold/lorem_ipsum_new_line_80_column.expected new file mode 100644 index 000000000..16ea4bab6 --- /dev/null +++ b/tests/fixtures/fold/lorem_ipsum_new_line_80_column.expected @@ -0,0 +1,11 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc interdum suscipit +sem vel ornare. Proin euismod, justo sed mollis dictum, eros urna ultricies augu +e, eu pharetra mi ex id ante. Duis convallis porttitor aliquam. Nunc vitae tinci +dunt ex. Suspendisse iaculis ligula ac diam consectetur lacinia. Donec vel velit + dui. Etiam fringilla, dolor quis tempor vehicula, lacus turpis bibendum velit, +et pellentesque elit odio a magna. +Cras vulputate tortor non libero vehicula euismod. Aliquam tincidunt nisl eget e +nim cursus, viverra sagittis magna commodo. Cras rhoncus egestas leo nec blandit +. Suspendisse potenti. Etiam ullamcorper leo vel lacus vestibulum, cursus semper + eros efficitur. In hac habitasse platea dictumst. Phasellus scelerisque vehicul +a fringilla.