Projects
openEuler:24.03:SP1:Everything
grep
_service:tar_scm:fix-grep-m2-pattern.patch
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:fix-grep-m2-pattern.patch of Package grep
From b9a8047099d2388c15e6ad39e7b8c91c6633096c Mon Sep 17 00:00:00 2001 From: Paul Eggert <eggert@cs.ucla.edu> Date: Fri, 9 Feb 2024 01:06:49 -0800 Subject: =?UTF-8?q?grep:=20fix=20=E2=80=98grep=20-m2=20pattern=20<file=20>?= =?UTF-8?q?/dev/null=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem reported by Grisha Levit <https://bugs.gnu.org/68989>. * src/grep.c (grep, main): Don’t set done_on_match if -m is used. * tests/max-count-overread: Add a test case. --- src/grep.c | 9 +++++++-- tests/max-count-overread | 6 ++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/grep.c b/src/grep.c index dab3be7..1256dfd 100644 --- a/src/grep.c +++ b/src/grep.c @@ -1558,7 +1558,11 @@ grep (int fd, struct stat const *st, bool *ineof) if (binary_files == WITHOUT_MATCH_BINARY_FILES) return 0; if (!count_matches) - done_on_match = out_quiet = true; + { + out_quiet = true; + if (max_count == INTMAX_MAX) + done_on_match = true; + } nlines_first_null = nlines; nul_zapper = eol; skip_nuls = skip_empty_lines; @@ -2897,7 +2901,8 @@ main (int argc, char **argv) if ((exit_on_match | dev_null_output) || list_files != LISTFILES_NONE) { count_matches = false; - done_on_match = true; + if (max_count == INTMAX_MAX) + done_on_match = true; } out_quiet = count_matches | done_on_match; diff --git a/tests/max-count-overread b/tests/max-count-overread index 23c45cb..f829cc5 100755 --- a/tests/max-count-overread +++ b/tests/max-count-overread @@ -12,4 +12,10 @@ echo x > exp || framework_failure_ yes x | timeout 10 grep -m1 x > out || fail=1 compare exp out || fail=1 +# Make sure -m2 stops reading even when output is /dev/null. +# In grep 3.11, it would continue reading. +printf 'x\nx\nx\n' >in || framework_failure +(grep -m2 x >/dev/null && head -n1) <in >out || fail=1 +compare exp out || fail=1 + Exit $fail -- cgit v1.1
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2