Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP7:GA
gzip.24045
bsc1198062-2.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bsc1198062-2.patch of Package gzip.24045
From 9d3248751178939713a39115cf68ec8a11506cc9 Mon Sep 17 00:00:00 2001 From: Paul Eggert <eggert@cs.ucla.edu> Date: Tue, 5 Apr 2022 15:16:33 -0700 Subject: [PATCH 7/7] zgrep: fix "binary file matches" mislabeling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem reported by Jim Avera (Bug#31280). This became more of an issue when GNU grep 3.5 (2020) started sending "binary file matches" diagnostics to stderr instead of to stdout. * tests/Makefile.am (TESTS): Add zgrep-binary. * tests/zgrep-binary: New test. * zgrep.in (args): New var, to accumulate args separately from grep command, so we can prepend args if need be. Most uses of 'grep' changed to use 'args' instead, or also. (with_filename): Set to 1 if more than one file and -h not given; this simplifies later code. (gnuish_grep): New var; evaluates to true if grep supports -H and --label options, as is true for GNU and FreeBSD grep. Append -H to 'grep' if outputting file names with GNUish grep, and use --label with GNUish grep unless reading from stdin, as that’s safer and more efficient than relabeling with 'sed'. --- NEWS | 3 +++ tests/Makefile.am | 1 + tests/zgrep-binary | 30 ++++++++++++++++++++++++++++++ zgrep.in | 28 +++++++++++++++++++--------- 4 files changed, 53 insertions(+), 9 deletions(-) create mode 100755 tests/zgrep-binary Index: gzip-1.10/tests/Makefile.am =================================================================== --- gzip-1.10.orig/tests/Makefile.am +++ gzip-1.10/tests/Makefile.am @@ -35,6 +35,7 @@ TESTS = \ zdiff \ zgrep-f \ zgrep-abuse \ + zgrep-binary \ zgrep-context \ zgrep-signal \ znew-k Index: gzip-1.10/tests/zgrep-binary =================================================================== --- /dev/null +++ gzip-1.10/tests/zgrep-binary @@ -0,0 +1,30 @@ +#!/bin/sh +# 'zgrep PATTERN FILE' would output "(standard input): binary file matches" +# without mentioning FILE. Fixed in gzip-1.12. + +# Copyright (C) 2022 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# limit so don't run it by default. + +. "${srcdir=.}/init.sh"; path_prepend_ .. + +fail=0 + +unset GREP_OPTIONS + +printf 'foo\0\n' >f || framework_failure_ +LC_ALL=C zgrep foo f >out 2>err && grep '(standard input)' out err && fail=1 + +Exit $fail Index: gzip-1.10/zgrep.in =================================================================== --- gzip-1.10.orig/zgrep.in +++ gzip-1.10/zgrep.in @@ -23,6 +23,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. grep='${GREP-'\''@GREP@'\''}' +args= version='zgrep (gzip) @VERSION@ Copyright (C) 2010-2018 Free Software Foundation, Inc. @@ -178,7 +179,7 @@ while test $# -ne 0; do option="'$option'";; esac - grep="$grep $option$optarg" + args="$args $option$optarg" done eval "set -- $operands "'${1+"$@"}' @@ -186,15 +187,23 @@ eval "set -- $operands "'${1+"$@"}' if test $have_pat -eq 0; then case ${1?"missing pattern; try \`$0 --help' for help"} in (*\'*) - grep="$grep -- '"$(printf '%s\n' "$1" | LC_ALL=C sed "$escape");; + args="$args -- '"$(printf '%s\n' "$1" | LC_ALL=C sed "$escape");; (*) - grep="$grep -- '$1'";; + args="$args -- '$1'";; esac shift fi if test $# -eq 0; then set -- - +elif test 1 -lt $# && test $no_filename -eq 0; then + with_filename=1 +fi + +l_e=$(eval "(echo e | $grep -H --label=l e) 2>/dev/null") && test "$l_e" = l:e +gnuish_grep="test $? -eq 0" +if $gnuish_grep && test $with_filename -eq 1; then + grep="$grep -H" fi exec 3>&1 @@ -221,9 +230,9 @@ do exec 5>&1 ($uncompress -cdfq -- "$i" 5>&-; echo $? >&5) 3>&- | if test $files_with_matches -eq 1; then - eval "$grep" >/dev/null && { printf '%s\n' "$i" || exit 2; } + eval "$grep$args" >/dev/null && { printf '%s\n' "$i" || exit 2; } elif test $files_without_matches -eq 1; then - eval "$grep" >/dev/null || { + eval "$grep$args" >/dev/null || { r=$? if test $r -eq 1; then printf '%s\n' "$i" || r=2 @@ -231,9 +240,10 @@ do test 256 -le $r && r=$(expr 128 + $r % 128) exit $r } - elif test $with_filename -eq 0 && - { test $# -eq 1 || test $no_filename -eq 1; }; then - eval "$grep" + elif $gnuish_grep && test "$i" != -; then + eval "$grep --label \"\$i\"$args" + elif $gnuish_grep || test $with_filename -eq 0; then + eval "$grep$args" else case $i in (*' @@ -247,7 +257,7 @@ do # Fail if grep or sed fails. r=$( exec 4>&1 - (eval "$grep" 4>&-; echo $? >&4) 3>&- | + (eval "$grep$args" 4>&-; echo $? >&4) 3>&- | LC_ALL=C sed "$sed_script" >&3 4>&- ) || { r=$?; test $r -lt 2 && r=2; } test 256 -le $r && r=$(expr 128 + $r % 128)
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor