unset TAR_OPTIONS
AT_CHECK([
+AT_UNPRIVILEGED_PREREQ
AT_GZIP_PREREQ
+AT_SIGPIPE_PREREQ
AT_SORT_PREREQ
mkdir dir
# or
# tar: Child returned status 2
-tar -c -f a -z --remove-files b c 2>err
+# Discard diagnostics that some shells generate about broken pipes,
+# and discard all of tar's diagnostics except for the ones saying "(child)".
+# Gzip's exit code is propagated to the shell. Usually it is 141.
+# Convert all non-zero exits to 2 to make it predictable.
+(tar -c -f a -z --remove-files b c 2>err || (exit 2) ) 2>/dev/null
EC=$?
sed -n '/(child)/p' err >&2
rm err