[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
grep branch, master, updated. v3.3-76-g0435ebc
From: |
Paul Eggert |
Subject: |
grep branch, master, updated. v3.3-76-g0435ebc |
Date: |
Sat, 22 Aug 2020 17:07:51 -0400 (EDT) |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "grep".
The branch, master has been updated
via 0435ebca64fbafcd62008c991dd9377d8a792dfc (commit)
from afc59ea2006a456401f1e674fbb2893236a5a6f0 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit/grep.git/commit/?id=0435ebca64fbafcd62008c991dd9377d8a792dfc
commit 0435ebca64fbafcd62008c991dd9377d8a792dfc
Author: Paul Eggert <eggert@cs.ucla.edu>
Date: Sat Aug 22 14:06:26 2020 -0700
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.
diff --git a/NEWS b/NEWS
index 6abb7c2..5f4c0b4 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,13 @@ GNU grep NEWS -*- outline
-*-
* Noteworthy changes in release ?.? (????-??-??) [?]
+** Changes in behavior
+
+ The --files-without-match (-L) option has reverted to its behavior
+ in grep 3.1 and earlier. That is, grep -L again succeeds when a
+ line is selected, not when a file is listed. The behavior in grep
+ 3.2 through 3.4 was causing compatibility problems.
+
* Noteworthy changes in release 3.4 (2020-01-02) [stable]
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
-----------------------------------------------------------------------
Summary of changes:
NEWS | 7 +++++++
doc/grep.texi | 3 ---
src/grep.c | 10 +++++-----
tests/skip-read | 4 ++--
4 files changed, 14 insertions(+), 10 deletions(-)
hooks/post-receive
--
grep
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- grep branch, master, updated. v3.3-76-g0435ebc,
Paul Eggert <=