bug-gzip
[Top][All Lists]
Advanced

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

Re: gzip zgrep-signal failure on Fedora 15 in an Emacs shell window


From: Paul Eggert
Subject: Re: gzip zgrep-signal failure on Fedora 15 in an Emacs shell window
Date: Wed, 02 Nov 2011 14:30:28 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0) Gecko/20110927 Thunderbird/7.0

On 11/02/11 13:52, Eric Blake wrote:
> 
> Sorry, but it is not possible in portable shell to reset SIGPIPE to SIG_DFL

Ah, thanks, I didn't know that.  It's been years since I wrote
real perl code but I gave it a whirl and pushed the following
patch.  (I hope Jim fixes it if it's wrong...)


* tests/zgrep-signal: Use perl instead of a nonportable shell trap.
Problem reported by Eric Blake in
<http://lists.gnu.org/archive/html/bug-gzip/2011-11/msg00005.html>.
diff --git a/tests/zgrep-signal b/tests/zgrep-signal
index 3c5b696..e19293a 100644
--- a/tests/zgrep-signal
+++ b/tests/zgrep-signal
@@ -22,17 +22,33 @@

 echo a | gzip -c > f.gz || framework_failure_

-if (trap - PIPE) >/dev/null 2>&1; then
-  trap - PIPE
-else
-  trap 13
-fi
-st=$(exec 3>&1; (cat f.gz f.gz; echo $? >&3) | :)
+test "x$PERL" = x && PERL=perl
+("$PERL" -e 'use warnings') >/dev/null 2>&1 || skip_ "no suitable perl found"
+
+exec_with_SIGPIPE_SIG_DFL () {
+  program=${1?}
+  shift
+  args=
+  for arg; do
+    args="$args, '$arg'"
+  done
+  "$PERL" -e "\$SIG{PIPE} = 'DEFAULT'; exec '$program'$args"
+}
+
+write_to_dangling_pipe () {
+  exec 3>&1
+  (
+    exec_with_SIGPIPE_SIG_DFL "$@"
+    echo $? >&3
+  ) | : || framework_failure_
+}
+
+st=$(write_to_dangling_pipe cat f.gz f.gz)
 test "$st" = 141 || framework_failure_ 'signal handling busted on this host'

 fail=0

-st=$(exec 3>&1; (zgrep a f.gz f.gz; echo $? >&3) | :) || framework_failure_
+st=$(write_to_dangling_pipe zgrep a f.gz f.gz)

 test "$st" = 141 || fail=1




reply via email to

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