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
MFC after:	2 weeks
Differential Revision:	D8924
This commit is contained in:
Dmitry Marakasov 2016-12-28 18:04:18 +00:00
parent cc7a82f5da
commit b9c36cc755
1 changed files with 5 additions and 3 deletions

View File

@ -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