diff --git a/0001-Revert-L-exit-status-change-introduced-in-grep-3.2.patch b/0001-Revert-L-exit-status-change-introduced-in-grep-3.2.patch new file mode 100644 index 0000000..8bfeaa4 --- /dev/null +++ b/0001-Revert-L-exit-status-change-introduced-in-grep-3.2.patch @@ -0,0 +1,87 @@ +From 0435ebca64fbafcd62008c991dd9377d8a792dfc Mon Sep 17 00:00:00 2001 +From: Paul Eggert +Date: Sat, 22 Aug 2020 14:06:26 -0700 +Subject: [PATCH] Revert -L exit status change introduced in grep 3.2 + +Problems reported by Antonio Diaz Diaz in: +https://bugs.gnu.org/28105#29 +* NEWS, doc/grep.texi (Exit Status), src/grep.c (usage): +Adjust documentation accordingly. +* src/grep.c (grepdesc, main): Go back to old behavior. +* tests/skip-read: Adjust tests accordingly. +--- + doc/grep.texi | 3 --- + src/grep.c | 10 +++++----- + tests/skip-read | 4 ++-- + 4 files changed, 7 insertions(+), 10 deletions(-) + +diff --git a/doc/grep.texi b/doc/grep.texi +index 4b26f9d..02b1968 100644 +--- a/doc/grep.texi ++++ b/doc/grep.texi +@@ -1112,9 +1112,6 @@ and only when @env{POSIXLY_CORRECT} is not set. + + Normally the exit status is 0 if a line is selected, 1 if no lines + were selected, and 2 if an error occurred. However, if the +-@option{-L} or @option{--files-without-match} is used, the exit status +-is 0 if a file is listed, 1 if no files were listed, and 2 if an error +-occurred. Also, if the + @option{-q} or @option{--quiet} or @option{--silent} option is used + and a line is selected, the exit status is 0 even if an error + occurred. Other @command{grep} implementations may exit with status +diff --git a/src/grep.c b/src/grep.c +index 7ba602d..5764b2a 100644 +--- a/src/grep.c ++++ b/src/grep.c +@@ -1864,11 +1864,11 @@ grepdesc (int desc, bool command_line) + fflush_errno (); + } + +- status = !count == !(list_files == LISTFILES_NONMATCHING); ++ status = !count; + +- if (list_files == LISTFILES_NONE || dev_null_output) ++ if (list_files == LISTFILES_NONE) + finalize_input (desc, &st, ineof); +- else if (status == 0) ++ else if (list_files == (status ? LISTFILES_NONMATCHING : LISTFILES_MATCHING)) + { + print_filename (); + putchar_errno ('\n' & filename_mask); +@@ -1997,7 +1997,7 @@ Context control:\n\ + printf (_("\ + When FILE is '-', read standard input. With no FILE, read '.' if\n\ + recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n\ +-Exit status is 0 if any line (or file if -L) is selected, 1 otherwise;\n\ ++Exit status is 0 if any line is selected, 1 otherwise;\n\ + if any error occurs and -q is not given, the exit status is 2.\n")); + emit_bug_reporting_address (); + } +@@ -2835,7 +2835,7 @@ main (int argc, char **argv) + + /* POSIX says -c, -l and -q are mutually exclusive. In this + implementation, -q overrides -l and -L, which in turn override -c. */ +- if (exit_on_match) ++ if (exit_on_match | dev_null_output) + list_files = LISTFILES_NONE; + if ((exit_on_match | dev_null_output) || list_files != LISTFILES_NONE) + { +diff --git a/tests/skip-read b/tests/skip-read +index 2a17334..1e9e718 100755 +--- a/tests/skip-read ++++ b/tests/skip-read +@@ -15,9 +15,9 @@ for opts in '-m0 y' '-f /dev/null' '-v ""'; do + eval returns_ 1 grep -l $opts $matcher /dev/null > out || fail=1 + compare /dev/null out || fail=1 + done +- eval grep -L $opts $matcher /dev/null > out || fail=1 ++ eval returns_ 1 grep -L $opts $matcher /dev/null > out || fail=1 + compare exp out || fail=1 +- eval grep -L $opts $matcher /dev/null > /dev/null || fail=1 ++ eval returns_ 1 grep -L $opts $matcher /dev/null > /dev/null || fail=1 + done + done + +-- +2.28.0 + diff --git a/grep.spec b/grep.spec index c769a79..503d19f 100644 --- a/grep.spec +++ b/grep.spec @@ -1,7 +1,7 @@ Summary: Pattern matching utilities Name: grep Version: 3.4 -Release: 4%{?dist} +Release: 5%{?dist} License: GPLv3+ URL: http://www.gnu.org/software/grep/ @@ -14,6 +14,8 @@ Source4: grepconf.sh Patch0: grep-3.4-man-fix-gs.patch # upstream ticket 39445 Patch1: grep-3.4-help-align.patch +# upstream ticket 28105 +Patch2: 0001-Revert-L-exit-status-change-introduced-in-grep-3.2.patch BuildRequires: gcc BuildRequires: pcre-devel >= 3.9-10, texinfo, gettext @@ -37,6 +39,7 @@ GNU grep is needed by many scripts, so it shall be installed on every system. %setup -q %patch0 -p1 -b .man-fix-gs %patch1 -p1 -b .help-align +%patch2 -p1 -b .zgrep-fix %build %global BUILD_FLAGS $RPM_OPT_FLAGS @@ -79,6 +82,10 @@ make check %{_libexecdir}/grepconf.sh %changelog +* Wed Aug 26 2020 Adam Williamson - 3.4-5 +- Backport fix for upstream #28105 to fix zgrep + Resolves: rhbz#1872913 + * Sat Aug 01 2020 Fedora Release Engineering - 3.4-4 - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild