From 944b62b93239b27b338d117f2668c0e95849659b Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 4 May 2008 22:29:27 +0300 Subject: [PATCH] Don't print an error message on broken pipe unless --verbose is used. --- src/lzma/io.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/lzma/io.c b/src/lzma/io.c index a7683fcc..b972099f 100644 --- a/src/lzma/io.c +++ b/src/lzma/io.c @@ -651,7 +651,20 @@ io_write(const file_pair *pair, const uint8_t *buf, size_t size) continue; } - errmsg(V_ERROR, _("%s: Write error: %s"), + // Handle broken pipe specially. gzip and bzip2 + // don't print anything on SIGPIPE. In addition, + // gzip --quiet uses exit status 2 (warning) on + // broken pipe instead of whatever raise(SIGPIPE) + // would make it return. It is there to hide "Broken + // pipe" message on some old shells (probably old + // GNU bash). + // + // We don't do anything special with --quiet, which + // is what bzip2 does too. However, we print a + // message if --verbose was used (or should that + // only be with double --verbose i.e. debugging?). + errmsg(errno == EPIPE ? V_VERBOSE : V_ERROR, + _("%s: Write error: %s"), pair->dest_name, strerror(errno)); return -1; }