Fix undesired error exit on receiving SIGPIPE.

* src/tar.c: Do not ignore SIGPIPE.
* tests/sigpipe.at: New testcase.
* tests/Makefile.am, tests/testsuite.at: Add sigpipe.at
* tests/remfiles01.at: Fix error code expectation.
* NEWS: Update.
This commit is contained in:
Sergey Poznyakoff
2010-03-20 13:14:31 +02:00
parent c1d3d13493
commit 340dbf5aab
6 changed files with 54 additions and 4 deletions

View File

@@ -127,6 +127,7 @@ TESTSUITE_AT = \
shortfile.at\
shortupd.at\
shortrec.at\
sigpipe.at\
sparse01.at\
sparse02.at\
sparse03.at\

View File

@@ -52,7 +52,9 @@ EC=$?
sed -n '/(child)/p' err >&2
rm err
find . | sort
exit $EC
# Gzip exit code is propagated to the shell. Usually it is
# 141. We convert all non-zero exits to 2 to make it predictable.
test $EC && exit 2
],
[2],
[.

39
tests/sigpipe.at Normal file
View File

@@ -0,0 +1,39 @@
# Process this file with autom4te to create testsuite. -*- Autotest -*-
# Test suite for GNU tar.
# 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, 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/>.
AT_SETUP([sigpipe handling])
AT_KEYWORDS([sigpipe])
# Description: Tar 1.23 ignored sigpipe which lead to spurious "write
# error" diagnostics when piping output to another programs.
# Reported-by: "Dmitry V. Levin" <ldv@altlinux.org>
# References: http://lists.gnu.org/archive/html/bug-tar/2010-03/msg00039.html
# <20100319184141.GC30047@wo.int.altlinux.org>
AT_CHECK([
genfile --length 2048 --file first
genfile --length 2048 --file second
genfile --length 2049 --file third
tar cf archive first second third
tar tf archive | :
],
[0])
AT_CLEANUP

View File

@@ -231,6 +231,8 @@ m4_include([remfiles01.at])
m4_include([remfiles02.at])
m4_include([remfiles03.at])
m4_include([sigpipe.at])
m4_include([star/gtarfail.at])
m4_include([star/gtarfail2.at])