parent
e2669b9096
commit
28284b81d5
@ -0,0 +1,87 @@
|
||||
From 0435ebca64fbafcd62008c991dd9377d8a792dfc Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
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
|
||||
|
@ -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 <awilliam@redhat.com> - 3.4-5
|
||||
- Backport fix for upstream #28105 to fix zgrep
|
||||
Resolves: rhbz#1872913
|
||||
|
||||
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.4-4
|
||||
- Second attempt - Rebuilt for
|
||||
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
Loading…
Reference in New Issue
Block a user