--- /dev/null
+#!/bin/sh
+# Check that zgrep is terminated gracefully by signal when
+# its grep/sed pipeline is terminated by a signal.
+
+# Copyright (C) 2010 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 <http://www.gnu.org/licenses/>.
+# limit so don't run it by default.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ gzip --version
+fi
+
+: ${srcdir=.}
+. "$srcdir/tests/init.sh"
+
+echo a | gzip -c > f.gz || framework_failure
+
+fail=0
+
+status=$(exec 3>&1; (zgrep a f.gz f.gz; echo $? >&3) | :) ||
+ framework_failure
+
+test "$status" = 141 || fail=1
+
+Exit $fail
r=$(
exec 4>&1
(eval "$grep" 4>&-; echo $? >&4) 3>&- | sed "$sed_script" >&3 4>&-
- ) || r=2
- exit $r
+ ) && exit $r
+ r=$?
+ test $r -gt 128 && test $r -le 143 && exit $r || exit 2
fi >&3 5>&-
)
r=$?
+ if test $r -gt 128 && test $r -le 143; then
+ kill -$(($r-128)) $$
+ exit $r
+ fi
test "$gzip_status" -eq 0 || test "$gzip_status" -eq 2 || r=2
test $res -lt $r && res=$r
done