1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-09-13 02:27:56 +00:00

Merge pull request #3873 from kilpkonn/tail_seek_outside_bounds

Fix tail panicing when seeking backwards
This commit is contained in:
Sylvestre Ledru 2022-08-26 22:35:50 +02:00 committed by GitHub
commit 0dbcdde64e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 1 deletions

View file

@ -1411,7 +1411,9 @@ fn bounded_tail(file: &mut File, settings: &Settings) {
file.seek(SeekFrom::Start(i as u64)).unwrap();
}
(FilterMode::Bytes(count), false) => {
file.seek(SeekFrom::End(-(*count as i64))).unwrap();
let len = file.seek(SeekFrom::End(0)).unwrap();
file.seek(SeekFrom::End(-((*count).min(len) as i64)))
.unwrap();
}
(FilterMode::Bytes(count), true) => {
// GNU `tail` seems to index bytes and lines starting at 1, not

View file

@ -2435,3 +2435,23 @@ fn test_illegal_seek() {
);
assert_eq!(p.wait().unwrap().code().unwrap(), 1);
}
#[test]
fn test_seek_bytes_backward_outside_file() {
new_ucmd!()
.arg("-c")
.arg("100")
.arg(FOOBAR_TXT)
.run()
.stdout_is_fixture(FOOBAR_TXT);
}
#[test]
fn test_seek_bytes_forward_outside_file() {
new_ucmd!()
.arg("-c")
.arg("+100")
.arg(FOOBAR_TXT)
.run()
.stdout_is("");
}