grep-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

grep branch, master, updated. v3.4-almost-22-g271793f


From: Paul Eggert
Subject: grep branch, master, updated. v3.4-almost-22-g271793f
Date: Thu, 17 Sep 2020 15:15:26 -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  271793f09cc604ad54ad89b18110716555cc748b (commit)
       via  c3245083337896f266494cbd17c7350dafddb9eb (commit)
      from  ffb095b135b43d00144623fed94b85ac7acfad8a (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=271793f09cc604ad54ad89b18110716555cc748b


commit 271793f09cc604ad54ad89b18110716555cc748b
Author: Paul Eggert <eggert@cs.ucla.edu>
Date:   Thu Sep 17 07:54:38 2020 -0700

    Send "Binary file FOO matches" to stderr
    
    * NEWS, doc/grep.texi: Mention this change (Bug#29668).
    * src/grep.c (grep): Send "Binary file FOO matches" to stderr
    instead of stdout.
    * tests/encoding-error, tests/invalid-multibyte-infloop:
    * tests/null-byte, tests/pcre-count, tests/surrogate-pair:
    * tests/symlink, tests/unibyte-binary:
    Adjust tests to match new behavior.  In all cases this
    simplifies the tests, which is a good sign.

diff --git a/NEWS b/NEWS
index 8a25eef..fd08663 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,14 @@ GNU grep NEWS                                    -*- outline 
-*-
 
 ** Changes in behavior
 
+  The "Binary file FOO matches" message is now sent to standard error
+  and FOO is now quoted, to avoid confusion with ordinary output and
+  when file names contain spaces and the like.  For example, commands
+  like 'grep PATTERN FILE | wc' no longer add 1 to the count of
+  matching text lines due to the presence of the message.  Like other
+  stderr messages, the message is now omitted if the --no-messages
+  (-s) option is given.
+
   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
diff --git a/doc/grep.texi b/doc/grep.texi
index 02b1968..a680d39 100644
--- a/doc/grep.texi
+++ b/doc/grep.texi
@@ -1754,7 +1754,8 @@ to output lines even from files that appear to be binary, 
use the
 @option{-a} or @samp{--binary-files=text} option.
 To eliminate the
 ``Binary file matches'' messages, use the @option{-I} or
-@samp{--binary-files=without-match} option.
+@samp{--binary-files=without-match} option,
+or the @option{-s} or @option{--no-messages} option.
 
 @item
 Why doesn't @samp{grep -lv} print non-matching file names?
diff --git a/src/grep.c b/src/grep.c
index 8c84a0f..0a0c71f 100644
--- a/src/grep.c
+++ b/src/grep.c
@@ -1641,14 +1641,10 @@ grep (int fd, struct stat const *st, bool *ineof)
  finish_grep:
   done_on_match = done_on_match_0;
   out_quiet = out_quiet_0;
-  if (binary_files == BINARY_BINARY_FILES && !out_quiet
+  if (binary_files == BINARY_BINARY_FILES && ! (out_quiet | suppress_errors)
       && (encoding_error_output
           || (0 <= nlines_first_null && nlines_first_null < nlines)))
-    {
-      printf_errno (_("Binary file %s matches\n"), input_filename ());
-      if (line_buffered)
-        fflush_errno ();
-    }
+    error (0, 0, _("Binary file %s matches"), quote (input_filename ()));
   return nlines;
 }
 
diff --git a/tests/encoding-error b/tests/encoding-error
index 53f77d4..61d161a 100755
--- a/tests/encoding-error
+++ b/tests/encoding-error
@@ -25,8 +25,7 @@ grep '^A' in >out || fail=1
 compare a out || fail=1
 
 grep '^P' in >out || fail=1
-printf 'Binary file in matches\n' >exp || framework_failure_
-compare exp out || fail=1
+compare /dev/null out || fail=1
 
 grep -I '^P' in >out 2>err || fail=1
 compare /dev/null out || fail=1
@@ -39,7 +38,7 @@ returns_ 1 grep '^X' in >out || fail=1
 compare /dev/null out || fail=1
 
 grep . in >out || fail=1
-(cat a j && printf 'Binary file in matches\n') >exp || framework_failure_
+cat a j >exp || framework_failure_
 compare exp out || fail=1
 
 grep -I . in >out 2>err || fail=1
diff --git a/tests/invalid-multibyte-infloop b/tests/invalid-multibyte-infloop
index 5b3bdfc..b4ad14b 100755
--- a/tests/invalid-multibyte-infloop
+++ b/tests/invalid-multibyte-infloop
@@ -24,12 +24,10 @@ else
   test $status -eq 2
 fi || fail=1
 
-echo 'Binary file input matches' >binary-file-matches
-
 LC_ALL=en_US.UTF-8 timeout 10 grep -F $(encode A) input > out
 status=$?
 if test $status -eq 0; then
-  compare binary-file-matches out
+  compare /dev/null out
 elif test $status -eq 1; then
   compare_dev_null_ /dev/null out
 else
diff --git a/tests/null-byte b/tests/null-byte
index f338883..c59f56b 100755
--- a/tests/null-byte
+++ b/tests/null-byte
@@ -56,7 +56,7 @@ echo xxx >exp || framework_failure_
 grep xxx in >out || fail=1
 compare exp out || fail=1
 
-printf '%s\n' xxx 'Binary file in matches' > exp || framework_failure_
+printf 'xxx\n' > exp || framework_failure_
 grep -E 'xxx|z' in >out || fail=1
 compare exp out || fail=1
 
diff --git a/tests/pcre-count b/tests/pcre-count
index e4b55b7..e95ced8 100755
--- a/tests/pcre-count
+++ b/tests/pcre-count
@@ -17,10 +17,9 @@ printf 'a\n%032768d\nb\0\n%032768d\na\n' 0 0 > in || 
framework_failure_
 
 # grep will discover that the input is a binary file sooner if the
 # page size is larger, so allow for either possible output.
-printf 'a\nBinary file in matches\n' >exp1a || framework_failure_
-printf 'Binary file in matches\n' >exp1b || framework_failure_
+printf 'a\n' >exp1a || framework_failure_
 LC_ALL=C grep -P 'a' in >out || fail=1
-compare exp1a out || compare exp1b out || fail=1
+compare exp1a out || compare /dev/null out || fail=1
 
 printf '2\n' >exp2 || framework_failure_
 LC_ALL=C grep -Pc 'a' in >out || fail=1
diff --git a/tests/surrogate-pair b/tests/surrogate-pair
index d4f0c0b..7066cf4 100755
--- a/tests/surrogate-pair
+++ b/tests/surrogate-pair
@@ -25,10 +25,6 @@ fail=0
 
 printf '\360\220\220\205\n' > in || framework_failure_
 
-# On platforms where wchar_t is only 16 bits, wchar_t cannot represent
-# the character encoded in 'in', so accept that behavior too.
-printf 'Binary file in matches\n' > out16 || framework_failure_
-
 LC_ALL=en_US.UTF-8
 export LC_ALL
 
@@ -41,7 +37,10 @@ compare /dev/null out || fail=1
 # Also test whether a surrogate-pair in the search string works.
 for opt in '' -i -E -F -iE -iF; do
   grep --file=in $opt in > out 2>&1 || fail=1
-  compare out in || compare out out16 || fail=1
+
+  # On platforms where wchar_t is only 16 bits, wchar_t cannot represent
+  # the character encoded in 'in', so accept that behavior too.
+  compare out in || compare /dev/null out || fail=1
 done
 
 Exit $fail
diff --git a/tests/symlink b/tests/symlink
index 325d9e6..7a5d558 100755
--- a/tests/symlink
+++ b/tests/symlink
@@ -58,11 +58,7 @@ do
 
     printf "$exp" >exp || framework_failure_
 
-    LC_ALL=C sort grepout >out-t || fail=1
-
-    # Ignore "Binary file d matches" on systems for which
-    # reading from a directory actually succeeds.
-    grep -v Binary out-t > out; case $? in 0|1) ;; *) fail=1;; esac
+    LC_ALL=C sort grepout >out || fail=1
 
     compare exp out || fail=1
   done
diff --git a/tests/unibyte-binary b/tests/unibyte-binary
index 6fcfd66..8ae0f0f 100755
--- a/tests/unibyte-binary
+++ b/tests/unibyte-binary
@@ -22,7 +22,7 @@ require_unibyte_locale
 fail=0
 
 printf 'a\n\200\nb\n' >in || framework_failure_
-printf 'a\nBinary file in matches\n' >exp || framework_failure_
+printf 'a\n' >exp || framework_failure_
 grep . in >out || fail=1
 
 # In some unibyte locales, \200 is an encoding error;

http://git.savannah.gnu.org/cgit/grep.git/commit/?id=c3245083337896f266494cbd17c7350dafddb9eb


commit 271793f09cc604ad54ad89b18110716555cc748b
Author: Paul Eggert <eggert@cs.ucla.edu>
Date:   Thu Sep 17 07:54:38 2020 -0700

    Send "Binary file FOO matches" to stderr
    
    * NEWS, doc/grep.texi: Mention this change (Bug#29668).
    * src/grep.c (grep): Send "Binary file FOO matches" to stderr
    instead of stdout.
    * tests/encoding-error, tests/invalid-multibyte-infloop:
    * tests/null-byte, tests/pcre-count, tests/surrogate-pair:
    * tests/symlink, tests/unibyte-binary:
    Adjust tests to match new behavior.  In all cases this
    simplifies the tests, which is a good sign.

diff --git a/NEWS b/NEWS
index 8a25eef..fd08663 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,14 @@ GNU grep NEWS                                    -*- outline 
-*-
 
 ** Changes in behavior
 
+  The "Binary file FOO matches" message is now sent to standard error
+  and FOO is now quoted, to avoid confusion with ordinary output and
+  when file names contain spaces and the like.  For example, commands
+  like 'grep PATTERN FILE | wc' no longer add 1 to the count of
+  matching text lines due to the presence of the message.  Like other
+  stderr messages, the message is now omitted if the --no-messages
+  (-s) option is given.
+
   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
diff --git a/doc/grep.texi b/doc/grep.texi
index 02b1968..a680d39 100644
--- a/doc/grep.texi
+++ b/doc/grep.texi
@@ -1754,7 +1754,8 @@ to output lines even from files that appear to be binary, 
use the
 @option{-a} or @samp{--binary-files=text} option.
 To eliminate the
 ``Binary file matches'' messages, use the @option{-I} or
-@samp{--binary-files=without-match} option.
+@samp{--binary-files=without-match} option,
+or the @option{-s} or @option{--no-messages} option.
 
 @item
 Why doesn't @samp{grep -lv} print non-matching file names?
diff --git a/src/grep.c b/src/grep.c
index 8c84a0f..0a0c71f 100644
--- a/src/grep.c
+++ b/src/grep.c
@@ -1641,14 +1641,10 @@ grep (int fd, struct stat const *st, bool *ineof)
  finish_grep:
   done_on_match = done_on_match_0;
   out_quiet = out_quiet_0;
-  if (binary_files == BINARY_BINARY_FILES && !out_quiet
+  if (binary_files == BINARY_BINARY_FILES && ! (out_quiet | suppress_errors)
       && (encoding_error_output
           || (0 <= nlines_first_null && nlines_first_null < nlines)))
-    {
-      printf_errno (_("Binary file %s matches\n"), input_filename ());
-      if (line_buffered)
-        fflush_errno ();
-    }
+    error (0, 0, _("Binary file %s matches"), quote (input_filename ()));
   return nlines;
 }
 
diff --git a/tests/encoding-error b/tests/encoding-error
index 53f77d4..61d161a 100755
--- a/tests/encoding-error
+++ b/tests/encoding-error
@@ -25,8 +25,7 @@ grep '^A' in >out || fail=1
 compare a out || fail=1
 
 grep '^P' in >out || fail=1
-printf 'Binary file in matches\n' >exp || framework_failure_
-compare exp out || fail=1
+compare /dev/null out || fail=1
 
 grep -I '^P' in >out 2>err || fail=1
 compare /dev/null out || fail=1
@@ -39,7 +38,7 @@ returns_ 1 grep '^X' in >out || fail=1
 compare /dev/null out || fail=1
 
 grep . in >out || fail=1
-(cat a j && printf 'Binary file in matches\n') >exp || framework_failure_
+cat a j >exp || framework_failure_
 compare exp out || fail=1
 
 grep -I . in >out 2>err || fail=1
diff --git a/tests/invalid-multibyte-infloop b/tests/invalid-multibyte-infloop
index 5b3bdfc..b4ad14b 100755
--- a/tests/invalid-multibyte-infloop
+++ b/tests/invalid-multibyte-infloop
@@ -24,12 +24,10 @@ else
   test $status -eq 2
 fi || fail=1
 
-echo 'Binary file input matches' >binary-file-matches
-
 LC_ALL=en_US.UTF-8 timeout 10 grep -F $(encode A) input > out
 status=$?
 if test $status -eq 0; then
-  compare binary-file-matches out
+  compare /dev/null out
 elif test $status -eq 1; then
   compare_dev_null_ /dev/null out
 else
diff --git a/tests/null-byte b/tests/null-byte
index f338883..c59f56b 100755
--- a/tests/null-byte
+++ b/tests/null-byte
@@ -56,7 +56,7 @@ echo xxx >exp || framework_failure_
 grep xxx in >out || fail=1
 compare exp out || fail=1
 
-printf '%s\n' xxx 'Binary file in matches' > exp || framework_failure_
+printf 'xxx\n' > exp || framework_failure_
 grep -E 'xxx|z' in >out || fail=1
 compare exp out || fail=1
 
diff --git a/tests/pcre-count b/tests/pcre-count
index e4b55b7..e95ced8 100755
--- a/tests/pcre-count
+++ b/tests/pcre-count
@@ -17,10 +17,9 @@ printf 'a\n%032768d\nb\0\n%032768d\na\n' 0 0 > in || 
framework_failure_
 
 # grep will discover that the input is a binary file sooner if the
 # page size is larger, so allow for either possible output.
-printf 'a\nBinary file in matches\n' >exp1a || framework_failure_
-printf 'Binary file in matches\n' >exp1b || framework_failure_
+printf 'a\n' >exp1a || framework_failure_
 LC_ALL=C grep -P 'a' in >out || fail=1
-compare exp1a out || compare exp1b out || fail=1
+compare exp1a out || compare /dev/null out || fail=1
 
 printf '2\n' >exp2 || framework_failure_
 LC_ALL=C grep -Pc 'a' in >out || fail=1
diff --git a/tests/surrogate-pair b/tests/surrogate-pair
index d4f0c0b..7066cf4 100755
--- a/tests/surrogate-pair
+++ b/tests/surrogate-pair
@@ -25,10 +25,6 @@ fail=0
 
 printf '\360\220\220\205\n' > in || framework_failure_
 
-# On platforms where wchar_t is only 16 bits, wchar_t cannot represent
-# the character encoded in 'in', so accept that behavior too.
-printf 'Binary file in matches\n' > out16 || framework_failure_
-
 LC_ALL=en_US.UTF-8
 export LC_ALL
 
@@ -41,7 +37,10 @@ compare /dev/null out || fail=1
 # Also test whether a surrogate-pair in the search string works.
 for opt in '' -i -E -F -iE -iF; do
   grep --file=in $opt in > out 2>&1 || fail=1
-  compare out in || compare out out16 || fail=1
+
+  # On platforms where wchar_t is only 16 bits, wchar_t cannot represent
+  # the character encoded in 'in', so accept that behavior too.
+  compare out in || compare /dev/null out || fail=1
 done
 
 Exit $fail
diff --git a/tests/symlink b/tests/symlink
index 325d9e6..7a5d558 100755
--- a/tests/symlink
+++ b/tests/symlink
@@ -58,11 +58,7 @@ do
 
     printf "$exp" >exp || framework_failure_
 
-    LC_ALL=C sort grepout >out-t || fail=1
-
-    # Ignore "Binary file d matches" on systems for which
-    # reading from a directory actually succeeds.
-    grep -v Binary out-t > out; case $? in 0|1) ;; *) fail=1;; esac
+    LC_ALL=C sort grepout >out || fail=1
 
     compare exp out || fail=1
   done
diff --git a/tests/unibyte-binary b/tests/unibyte-binary
index 6fcfd66..8ae0f0f 100755
--- a/tests/unibyte-binary
+++ b/tests/unibyte-binary
@@ -22,7 +22,7 @@ require_unibyte_locale
 fail=0
 
 printf 'a\n\200\nb\n' >in || framework_failure_
-printf 'a\nBinary file in matches\n' >exp || framework_failure_
+printf 'a\n' >exp || framework_failure_
 grep . in >out || fail=1
 
 # In some unibyte locales, \200 is an encoding error;

-----------------------------------------------------------------------

Summary of changes:
 NEWS                            | 11 +++++++++++
 doc/grep.texi                   |  3 ++-
 src/grep.c                      | 11 ++++-------
 tests/encoding-error            | 14 +++++++++++---
 tests/invalid-multibyte-infloop |  4 +---
 tests/null-byte                 |  2 +-
 tests/pcre-count                |  5 ++---
 tests/surrogate-pair            |  9 ++++-----
 tests/symlink                   |  6 +-----
 tests/unibyte-binary            |  2 +-
 10 files changed, 38 insertions(+), 29 deletions(-)


hooks/post-receive
-- 
grep



reply via email to

[Prev in Thread] Current Thread [Next in Thread]