Skip to content

csplit: incorrect split with --suppress-matched and positive offset #7052

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
jfinkels opened this issue Jan 2, 2025 · 2 comments · Fixed by #7088
Closed

csplit: incorrect split with --suppress-matched and positive offset #7052

jfinkels opened this issue Jan 2, 2025 · 2 comments · Fixed by #7088

Comments

@jfinkels
Copy link
Collaborator

jfinkels commented Jan 2, 2025

Environment: Ubuntu 20.04, uutils main branch (git commit 6a8b766), GNU coreutils v9.5.227-28b1.

Steps to reproduce:

printf "a\nb\nc\nd\ne\n" | ./target/debug/csplit - --suppress-matched /b/+1

What happens now: with uutils csplit the command outputs:

2
6

and the contents of the two files are

$ cat xx00
a
$ cat xx01
c
d
e

What I expected to happen: with GNU csplit, the command outputs

4
4

and the contents of the two files are

$ cat xx00
a
b
$ cat xx01
d
e

Notes: this is causing a test failure in GNU test file tests/csplit/csplit-suppress-matched.pl.

Also, the current erroneous behavior is enforced by a unit test in tests/by-util/test_csplit.rs named test_up_to_match_offset_option_suppress_matched. That test case will need to be updated as well.

@Felle33
Copy link
Contributor

Felle33 commented Jan 6, 2025

Hello, I would like to work on this issue. In particular, I was trying to run the test test_skip_to_match_offset in the test_csplit.rs to understand the mechanism of the algorithm, but I don't understand where the file numbers50.txt is created and filled.

@cakebaker
Copy link
Contributor

@Felle33 sure, go ahead :) You can find numbers50.txt in tests/fixtures/csplit/

Felle33 added a commit to Felle33/coreutils that referenced this issue Jan 7, 2025
…atched according to issue uutils#7052 and modified also test_up_to_match_negative_offset_option_suppress_matched
cakebaker pushed a commit to Felle33/coreutils that referenced this issue Jan 8, 2025
…atched according to issue uutils#7052 and modified also test_up_to_match_negative_offset_option_suppress_matched
cakebaker pushed a commit that referenced this issue Jan 9, 2025
…egative offset is present (#7088)

* tests/csplit: modified test test_up_to_match_offset_option_suppress_matched according to issue #7052 and modified also test_up_to_match_negative_offset_option_suppress_matched

* csplit: managed the positive and negative offset when the --suppressed-matched flag is active

* tests/csplit: modified test test_up_to_match_offset_option_suppress_matched according to issue #7052 and modified also test_up_to_match_negative_offset_option_suppress_matched

* csplit: managed the positive and negative offset when the --suppressed-matched flag is active

* csplit: swapped if and else blocks for better readability
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants