mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-27 19:17:43 +00:00
fold: Handle input with newlines (#1680)
The read_line function appends to the given buffer which is never cleared. This leads to lines being duplicated.
This commit is contained in:
parent
61577e34fa
commit
18c39daed7
4 changed files with 25 additions and 8 deletions
|
@ -97,9 +97,9 @@ fn fold(filenames: Vec<String>, bytes: bool, spaces: bool, width: usize) {
|
|||
}
|
||||
|
||||
#[inline]
|
||||
fn fold_file<T: Read>(mut file: BufReader<T>, bytes: bool, spaces: bool, width: usize) {
|
||||
let mut line = String::new();
|
||||
while safe_unwrap!(file.read_line(&mut line)) > 0 {
|
||||
fn fold_file<T: Read>(file: BufReader<T>, 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<T: Read>(mut file: BufReader<T>, bytes: bool, spaces: bool, width:
|
|||
output.push(ch);
|
||||
}
|
||||
if count > 0 {
|
||||
if newline {
|
||||
println!("{}", output);
|
||||
} else {
|
||||
print!("{}", output);
|
||||
}
|
||||
println!("{}", output);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
2
tests/fixtures/fold/lorem_ipsum_new_line.txt
vendored
Normal file
2
tests/fixtures/fold/lorem_ipsum_new_line.txt
vendored
Normal file
|
@ -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.
|
11
tests/fixtures/fold/lorem_ipsum_new_line_80_column.expected
vendored
Normal file
11
tests/fixtures/fold/lorem_ipsum_new_line_80_column.expected
vendored
Normal file
|
@ -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.
|
Loading…
Add table
Add a link
Reference in a new issue