diff options
author | amdmi3 <amdmi3@FreeBSD.org> | 2017-01-13 10:28:26 +0000 |
---|---|---|
committer | amdmi3 <amdmi3@FreeBSD.org> | 2017-01-13 10:28:26 +0000 |
commit | 008e6f76d63aaea5529410efd6a3bb521b249a2b (patch) | |
tree | 827c23821905aa1af3f744044bcdfbccbe15e9dc | |
parent | 2a97f9b8173c2efc69ce95ce68602dbe19c782b9 (diff) | |
download | FreeBSD-src-008e6f76d63aaea5529410efd6a3bb521b249a2b.zip FreeBSD-src-008e6f76d63aaea5529410efd6a3bb521b249a2b.tar.gz |
MFC r310718:
bzip2 does not exit after showing license as requested with --version
or --license as most apps would do, instead it waits for data to
compress on stdin. Because of that, if `bzip2 --version' is called,
bogus `bzip2: I won't write compressed data to a terminal' error
message will be displayed, and checking for bzip2 version in scripts
as in
bzip2 --version 2>&1 | grep -o "Version [^,]*"
will hand as bzip2 would wait for data to compress on stdin. Fix
this by exiting right after showing version/license text.
I've tried to push this upstream for more than a year, but author
is unresponsive, so upstream may be considered dead.
Ubuntu applies similar fix, for the note.
PR: 199443
Approved by: dim, bapt
Differential Revision: D8924
-rw-r--r-- | contrib/bzip2/bzip2.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/contrib/bzip2/bzip2.c b/contrib/bzip2/bzip2.c index 6de9d1d..e6e8369 100644 --- a/contrib/bzip2/bzip2.c +++ b/contrib/bzip2/bzip2.c @@ -1890,7 +1890,9 @@ IntNative main ( IntNative argc, Char *argv[] ) case '8': blockSize100k = 8; break; case '9': blockSize100k = 9; break; case 'V': - case 'L': license(); break; + case 'L': license(); + exit ( 0 ); + break; case 'v': verbosity++; break; case 'h': usage ( progName ); exit ( 0 ); @@ -1916,8 +1918,8 @@ IntNative main ( IntNative argc, Char *argv[] ) if (ISFLAG("--keep")) keepInputFiles = True; else if (ISFLAG("--small")) smallMode = True; else if (ISFLAG("--quiet")) noisy = False; else - if (ISFLAG("--version")) license(); else - if (ISFLAG("--license")) license(); else + if (ISFLAG("--version")) { license(); exit ( 0 ); } else + if (ISFLAG("--license")) { license(); exit ( 0 ); } else if (ISFLAG("--exponential")) workFactor = 1; else if (ISFLAG("--repetitive-best")) redundant(aa->name); else if (ISFLAG("--repetitive-fast")) redundant(aa->name); else |