1
0
Fork 0

Merging upstream version 0.6.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-24 04:58:15 +01:00
parent 621b34d9c0
commit fe44868192
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
14 changed files with 207 additions and 172 deletions

View file

@ -1,3 +1,10 @@
2009-10-05 Antonio Diaz Diaz <ant_diaz@teleline.es>
* Version 0.6 released.
* zcat.in, zgrep.in: Removed again default compressor. Format of
data read from stdin is now automatically detected.
* Makefile.in: Added "--name" option to help2man invocation.
2009-10-01 Antonio Diaz Diaz <ant_diaz@teleline.es>
* Version 0.5 released.

View file

@ -65,20 +65,19 @@ info : $(VPATH)/doc/$(progname).info
$(VPATH)/doc/$(progname).info : $(VPATH)/doc/$(progname).texinfo
cd $(VPATH)/doc && makeinfo $(progname).texinfo
man : $(VPATH)/doc/$(progname).1 $(VPATH)/doc/zcat.1 $(VPATH)/doc/zdiff.1 \
$(VPATH)/doc/zgrep.1
$(VPATH)/doc/$(progname).1 : $(progname)
help2man -o $(VPATH)/doc/$(progname).1 ./$(progname)
man : $(VPATH)/doc/zcat.1 $(VPATH)/doc/zdiff.1 $(VPATH)/doc/zgrep.1
$(VPATH)/doc/zcat.1 : zcat
help2man -o $(VPATH)/doc/zcat.1 --no-info ./zcat
help2man -n 'concatenate compressed files to stdout' \
-o $(VPATH)/doc/zcat.1 --no-info ./zcat
$(VPATH)/doc/zdiff.1 : zdiff
help2man -o $(VPATH)/doc/zdiff.1 --no-info ./zdiff
help2man -n 'compare compressed files' \
-o $(VPATH)/doc/zdiff.1 --no-info ./zdiff
$(VPATH)/doc/zgrep.1 : zgrep
help2man -o $(VPATH)/doc/zgrep.1 --no-info ./zgrep
help2man -n 'search compressed files for a regular expression' \
-o $(VPATH)/doc/zgrep.1 --no-info ./zgrep
Makefile : $(VPATH)/configure $(VPATH)/Makefile.in
./config.status
@ -103,7 +102,6 @@ install-info :
install-man :
if test ! -d $(DESTDIR)$(mandir)/man1 ; then $(INSTALL_DIR) $(DESTDIR)$(mandir)/man1 ; fi
$(INSTALL_DATA) $(VPATH)/doc/$(progname).1 $(DESTDIR)$(mandir)/man1/$(progname).1
$(INSTALL_DATA) $(VPATH)/doc/zcat.1 $(DESTDIR)$(mandir)/man1/zcat.1
-rm -f $(DESTDIR)$(mandir)/man1/zcmp.1
cd $(DESTDIR)$(mandir)/man1 && ln -s zdiff.1 zcmp.1
@ -131,7 +129,6 @@ uninstall-info :
-rm -f $(DESTDIR)$(infodir)/$(progname).info
uninstall-man :
-rm -f $(DESTDIR)$(mandir)/man1/$(progname).1
-rm -f $(DESTDIR)$(mandir)/man1/zcat.1
-rm -f $(DESTDIR)$(mandir)/man1/zcmp.1
-rm -f $(DESTDIR)$(mandir)/man1/zdiff.1

4
NEWS
View file

@ -1,3 +1,3 @@
Changes in version 0.5:
Changes in version 0.6:
Zcat, zegrep, zfgrep and zgrep can read again compressed data from stdin.
Format of data read from stdin is now automatically detected.

4
configure vendored
View file

@ -5,12 +5,12 @@
# This configure script is free software: you have unlimited permission
# to copy, distribute and modify it.
#
# Date of this version: 2009-10-01
# Date of this version: 2009-10-05
args=
no_create=
progname=zutils
progversion=0.5
progversion=0.6
srctrigger=zdiff.in
# clear some things potentially inherited from environment.

View file

@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
.TH ZCAT "1" "October 2009" "Zcat 0.5" "User Commands"
.TH ZCAT "1" "October 2009" "Zcat 0.6" "User Commands"
.SH NAME
Zcat \- manual page for Zcat 0.5
Zcat \- concatenate compressed files to stdout
.SH SYNOPSIS
.B zcat
[\fIOPTIONS\fR] [\fICAT_OPTIONS\fR] [\fIFILES\fR]
@ -13,8 +13,9 @@ concatenation of any combination of compressed and non\-compressed files.
If any given file is compressed, its uncompressed content is used. If a
given file does not exist, zcat tries the compressed file names
corresponding to the supported compressors. If no files are specified,
the standard input is decompressed using the selected compressor and
sent to stdout.
data is read from standard input, decompressed if needed, and sent to
stdout. Data read from standard input must be of the same type; all
uncompressed or all compressed with the same compressor.
The supported compressors are gzip, bzip2, lzip and xz.
.PP
CAT_OPTIONS are passed directly to cat.
@ -26,18 +27,6 @@ display this help and exit
.TP
\fB\-V\fR, \fB\-\-version\fR
output version information and exit
.TP
\fB\-\-gzip\fR
use gzip as decompressor for stdin (default)
.TP
\fB\-\-bzip2\fR
use bzip2 as decompressor for stdin
.TP
\fB\-\-lzip\fR
use lzip as decompressor for stdin
.TP
\fB\-\-xz\fR
use xz as decompressor for stdin
.SH "REPORTING BUGS"
Report bugs to zutils\-bug@nongnu.org
Zutils home page: http://www.nongnu.org/zutils/zutils.html

View file

@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
.TH ZDIFF "1" "October 2009" "Zdiff 0.5" "User Commands"
.TH ZDIFF "1" "October 2009" "Zdiff 0.6" "User Commands"
.SH NAME
Zdiff \- manual page for Zdiff 0.5
Zdiff \- compare compressed files
.SH SYNOPSIS
.B zdiff
[\fIOPTIONS\fR] [\fIDIFF_OPTIONS\fR] \fIFILE1 \fR[\fIFILE2\fR]

View file

@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
.TH ZGREP "1" "October 2009" "Zgrep 0.5" "User Commands"
.TH ZGREP "1" "October 2009" "Zgrep 0.6" "User Commands"
.SH NAME
Zgrep \- manual page for Zgrep 0.5
Zgrep \- search compressed files for a regular expression
.SH SYNOPSIS
.B zgrep
[\fIOPTIONS\fR] [\fIGREP_OPTIONS\fR] \fIPATTERN \fR[\fIFILES\fR]
@ -13,8 +13,9 @@ transparent search on any combination of compressed and non\-compressed
files. If any given file is compressed, its uncompressed content is
used. If a given file does not exist, zgrep tries the compressed file
names corresponding to the supported compressors. If no files are
specified, the standard input is decompressed using the selected
compressor and fed to grep.
specified, data is read from standard input, decompressed if needed, and
fed to grep. Data read from standard input must be of the same type; all
uncompressed or all compressed with the same compressor.
The supported compressors are gzip, bzip2, lzip and xz.
.PP
Zegrep is a shortcut for "zgrep \fB\-E\fR"
@ -29,18 +30,6 @@ display this help and exit
.TP
\fB\-V\fR, \fB\-\-version\fR
output version information and exit
.TP
\fB\-\-gzip\fR
use gzip as decompressor for stdin (default)
.TP
\fB\-\-bzip2\fR
use bzip2 as decompressor for stdin
.TP
\fB\-\-lzip\fR
use lzip as decompressor for stdin
.TP
\fB\-\-xz\fR
use xz as decompressor for stdin
.SH "REPORTING BUGS"
Report bugs to zutils\-bug@nongnu.org
Zutils home page: http://www.nongnu.org/zutils/zutils.html

View file

@ -1,46 +0,0 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
.TH ZUTILS "1" "October 2009" "Zutils 0.5" "User Commands"
.SH NAME
Zutils \- manual page for Zutils 0.5
.SH SYNOPSIS
.B zutils
[\fIoptions\fR] [\fIfiles\fR]
.SH DESCRIPTION
Zutils \- A file format detector for compressed files.
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
display this help and exit
.TP
\fB\-V\fR, \fB\-\-version\fR
output version information and exit
.TP
\fB\-q\fR, \fB\-\-quiet\fR
suppress all messages
.TP
\fB\-t\fR, \fB\-\-test\fR
test compressed file type
.TP
\fB\-v\fR, \fB\-\-verbose\fR
be verbose (a 2nd \fB\-v\fR gives more)
.SH "REPORTING BUGS"
Report bugs to zutils\-bug@nongnu.org
Zutils home page: http://www.nongnu.org/zutils/zutils.html
.SH COPYRIGHT
Copyright \(co 2009 Antonio Diaz Diaz.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
.br
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
.SH "SEE ALSO"
The full documentation for
.B Zutils
is maintained as a Texinfo manual. If the
.B info
and
.B Zutils
programs are properly installed at your site, the command
.IP
.B info Zutils
.PP
should give you access to the complete manual.

Binary file not shown.

View file

@ -5,8 +5,8 @@
@finalout
@c %**end of header
@set UPDATED 1 October 2009
@set VERSION 0.5
@set UPDATED 5 October 2009
@set VERSION 0.6
@dircategory Data Compression
@direntry
@ -68,8 +68,9 @@ concatenation of any combination of compressed and non-compressed files.
If any given file is compressed, its uncompressed content is used. If a
given file does not exist, zcat tries the compressed file names
corresponding to the supported compressors. If no files are specified,
the standard input is decompressed using the selected compressor and
sent to stdout.
data is read from standard input, decompressed if needed, and sent to
stdout. Data read from standard input must be of the same type; all
uncompressed or all compressed with the same compressor.
The format for running zcat is:
@ -92,18 +93,6 @@ Print an informative help message describing the options and exit.
@itemx -V
Print the version number of zcat on the standard output and exit.
@item --gzip
Use gzip as decompressor for stdin (default).
@item --bzip2
Use bzip2 as decompressor for stdin.
@item --lzip
Use lzip as decompressor for stdin.
@item --xz
Use xz as decompressor for stdin.
@end table
@ -170,8 +159,9 @@ transparent search on any combination of compressed and non-compressed
files. If any given file is compressed, its uncompressed content is
used. If a given file does not exist, zgrep tries the compressed file
names corresponding to the supported compressors. If no files are
specified, the standard input is decompressed using the selected
compressor and fed to grep.
specified, data is read from standard input, decompressed if needed, and
fed to grep. Data read from standard input must be of the same type; all
uncompressed or all compressed with the same compressor.
@noindent
Zegrep is a shortcut for @samp{zgrep -E}@*
@ -199,18 +189,6 @@ Print an informative help message describing the options and exit.
@itemx -V
Print the version number of zgrep on the standard output and exit.
@item --gzip
Use gzip as decompressor for stdin (default).
@item --bzip2
Use bzip2 as decompressor for stdin.
@item --lzip
Use lzip as decompressor for stdin.
@item --xz
Use xz as decompressor for stdin.
@end table

146
main.cc
View file

@ -134,6 +134,7 @@ void show_help() throw()
// std::printf( " -d, --decompress decompress\n" );
// std::printf( " -f, --force overwrite existing output files\n" );
// std::printf( " -k, --keep keep (don't delete) input files\n" );
std::printf( " -m, --magic=<type> output magic bytes for given file type\n" );
// std::printf( " -o, --output=<file> if reading stdin, place the output into <file>\n" );
std::printf( " -q, --quiet suppress all messages\n" );
std::printf( " -t, --test test compressed file type\n" );
@ -492,6 +493,129 @@ int decompress( const int inhandle, const Pretty_print & pp )
}
*/
unsigned char xdigit( const int value ) throw()
{
if( value >= 0 && value <= 9 ) return '0' + value;
if( value >= 10 && value <= 15 ) return 'A' + value - 10;
return 0;
}
int xtoi( const unsigned char ch ) throw()
{
switch( ch )
{
case '0': return 0;
case '1': return 1;
case '2': return 2;
case '3': return 3;
case '4': return 4;
case '5': return 5;
case '6': return 6;
case '7': return 7;
case '8': return 8;
case '9': return 9;
case 'a':
case 'A': return 0x0A;
case 'b':
case 'B': return 0x0B;
case 'c':
case 'C': return 0x0C;
case 'd':
case 'D': return 0x0D;
case 'e':
case 'E': return 0x0E;
case 'f':
case 'F': return 0x0F;
default: return -1;
}
}
bool hex_to_data( const std::string & hex, std::string & data )
{
data.clear();
if( hex.size() == 0 || hex.size() % 2 != 0 ) return false;
for( unsigned int i = 0; 2 * i + 1 < hex.size(); ++i )
{
int uch = xtoi( hex[2*i] );
int lch = xtoi( hex[2*i+1] );
if( uch < 0 || lch < 0 ) return false;
data.push_back( ( uch << 4 ) | lch );
}
return true;
}
int print_magic_type( const std::string & magic_type )
{
std::string data;
if( magic_type == "gzip" ) std::printf( "\x1F\x8B" );
else if( magic_type == "bzip2" ) std::printf( "BZh" );
else if( magic_type == "lzip" ) std::printf( "LZIP" );
else if( magic_type == "xz" ) std::printf( "%c7zXZ", '\xFD' );
else if( hex_to_data( magic_type, data ) ) std::printf( data.c_str() );
else return 1;
return 0;
}
int test_stdin_type( const int inhandle, const Pretty_print & pp )
{
unsigned char buf[5];
const char * msg = 0;
int i = 0;
if( readblock( inhandle, (char *)buf, 1 ) == 1 )
{
if( buf[0] == 0x1F )
{
if( readblock( inhandle, (char *)&buf[++i], 1 ) == 1 && buf[i] == 0x8B )
msg = "gzip";
}
else if( buf[0] == 'B' )
{
if( readblock( inhandle, (char *)&buf[++i], 1 ) == 1 && buf[i] == 'Z' &&
readblock( inhandle, (char *)&buf[++i], 1 ) == 1 && buf[i] == 'h' )
msg = "bzip2";
}
else if( buf[0] == 'L' )
{
if( readblock( inhandle, (char *)&buf[++i], 1 ) == 1 && buf[i] == 'Z' &&
readblock( inhandle, (char *)&buf[++i], 1 ) == 1 && buf[i] == 'I' &&
readblock( inhandle, (char *)&buf[++i], 1 ) == 1 && buf[i] == 'P' )
msg = "lzip";
}
else if( buf[0] == 0xFD )
{
if( readblock( inhandle, (char *)&buf[++i], 1 ) == 1 && buf[i] == '7' &&
readblock( inhandle, (char *)&buf[++i], 1 ) == 1 && buf[i] == 'z' &&
readblock( inhandle, (char *)&buf[++i], 1 ) == 1 && buf[i] == 'X' &&
readblock( inhandle, (char *)&buf[++i], 1 ) == 1 && buf[i] == 'Z' )
msg = "xz";
}
}
const int retval = ( msg ? 0 : 1 );
if( verbosity >= 0 )
{
if( verbosity >= 1 ) pp();
if( !msg )
{
char hexmsg[(2*sizeof buf)+1];
for( int j = 0; j <= i; ++j )
{
hexmsg[2*j] = xdigit( buf[j] >> 4 );
hexmsg[2*j+1] = xdigit( buf[j] & 0x0F );
}
hexmsg[2*i+2] = 0;
msg = hexmsg;
}
std::printf( "%s\n", msg );
}
return retval;
}
int test_type( const int inhandle, const Pretty_print & pp )
{
unsigned char buf[5];
@ -505,7 +629,7 @@ int test_type( const int inhandle, const Pretty_print & pp )
msg = "bzip2";
else if( buf[0] == 'L' && buf[1] == 'Z' && buf[2] == 'I' && buf[3] == 'P' )
msg = "lzip";
else if( buf[1] == '7' && buf[2] == 'z' && buf[3] == 'X' && buf[4] == 'Z' )
else if( buf[0] == 0xFD && buf[1] == '7' && buf[2] == 'z' && buf[3] == 'X' && buf[4] == 'Z' )
msg = "xz";
}
const int retval = ( msg ? 0 : 1 );
@ -546,6 +670,7 @@ int main( const int argc, const char * argv[] )
std::string input_filename;
std::string default_output_filename;
std::vector< std::string > filenames;
std::string magic_type;
invocation_name = argv[0];
const Arg_parser::Option options[] =
@ -555,6 +680,7 @@ int main( const int argc, const char * argv[] )
{ 'f', "force", Arg_parser::no },
{ 'h', "help", Arg_parser::no },
{ 'k', "keep", Arg_parser::no },
{ 'm', "magic", Arg_parser::yes },
{ 'o', "output", Arg_parser::yes },
{ 'q', "quiet", Arg_parser::no },
{ 't', "test", Arg_parser::no },
@ -571,7 +697,7 @@ int main( const int argc, const char * argv[] )
{
const int code = parser.code( argind );
if( !code ) break; // no more options
const char * arg = parser.argument( argind ).c_str();
const std::string & arg = parser.argument( argind );
switch( code )
{
case 'c': to_stdout = true; break;
@ -579,6 +705,7 @@ int main( const int argc, const char * argv[] )
case 'f': force = true; break;
case 'h': show_help(); return 0;
case 'k': keep_input_files = true; break;
case 'm': magic_type = arg; break;
case 'o': default_output_filename = arg; break;
case 'q': verbosity = -1; break;
case 't': program_mode = m_test; break;
@ -588,6 +715,8 @@ int main( const int argc, const char * argv[] )
}
}
if( magic_type.size() ) return print_magic_type( magic_type );
bool filenames_given = false;
for( ; argind < parser.arguments(); ++argind )
{
@ -669,19 +798,22 @@ int main( const int argc, const char * argv[] )
case m_decompress:
/*tmp = decompress( inhandle, pp );*/ break;
case m_test:
tmp = test_type( inhandle, pp ); break;
if( inhandle == STDIN_FILENO )
tmp = test_stdin_type( inhandle, pp );
else tmp = test_type( inhandle, pp );
break;
}
if( tmp > retval ) retval = tmp;
if( tmp && program_mode != m_test ) cleanup_and_fail( retval );
/*
if( delete_output_on_interrupt )
close_and_set_permissions( in_statsp, &retval );
// if( delete_output_on_interrupt )
// close_and_set_permissions( in_statsp, &retval );
if( input_filename.size() )
{
close( inhandle ); inhandle = -1;
if( !keep_input_files && !to_stdout && program_mode != m_test )
std::remove( input_filename.c_str() );
}*/
}
}
if( outhandle >= 0 ) close( outhandle );
return retval;

View file

@ -55,13 +55,10 @@ echo -n .
"${ZCAT}" < in.gz > copy || fail=1
cmp in copy || fail=1
echo -n .
"${ZCAT}" --gzip < in.gz > copy || fail=1
"${ZCAT}" < in.bz2 > copy || fail=1
cmp in copy || fail=1
echo -n .
"${ZCAT}" --bzip2 < in.bz2 > copy || fail=1
cmp in copy || fail=1
echo -n .
"${ZCAT}" --lzip < in.lz > copy || fail=1
"${ZCAT}" < in.lz > copy || fail=1
cmp in copy || fail=1
echo -n .
"${ZCAT}" in > copy || fail=1
@ -122,11 +119,9 @@ done
echo -n .
"${ZGREP}" License < in.gz 2>&1 > /dev/null || fail=1
echo -n .
"${ZGREP}" --gzip License < in.gz 2>&1 > /dev/null || fail=1
"${ZGREP}" License < in.bz2 2>&1 > /dev/null || fail=1
echo -n .
"${ZGREP}" --bzip2 License < in.bz2 2>&1 > /dev/null || fail=1
echo -n .
"${ZGREP}" --lzip License < in.lz 2>&1 > /dev/null || fail=1
"${ZGREP}" License < in.lz 2>&1 > /dev/null || fail=1
echo -n .
"${ZGREP}" License in 2>&1 > /dev/null || fail=1
echo -n .

29
zcat.in
View file

@ -8,7 +8,6 @@
LC_ALL=C
export LC_ALL
args=
default_prog=gzip
two_hyphens=0
# Loop over args until a filename is found
@ -23,8 +22,9 @@ while [ x"$1" != x ] ; do
echo "If any given file is compressed, its uncompressed content is used. If a"
echo "given file does not exist, zcat tries the compressed file names"
echo "corresponding to the supported compressors. If no files are specified,"
echo "the standard input is decompressed using the selected compressor and"
echo "sent to stdout."
echo "data is read from standard input, decompressed if needed, and sent to"
echo "stdout. Data read from standard input must be of the same type; all"
echo "uncompressed or all compressed with the same compressor."
echo "The supported compressors are gzip, bzip2, lzip and xz."
echo
echo "Usage: $0 [OPTIONS] [CAT_OPTIONS] [FILES]"
@ -35,10 +35,6 @@ while [ x"$1" != x ] ; do
echo "Options:"
echo " -h, --help display this help and exit"
echo " -V, --version output version information and exit"
echo " --gzip use gzip as decompressor for stdin (default)"
echo " --bzip2 use bzip2 as decompressor for stdin"
echo " --lzip use lzip as decompressor for stdin"
echo " --xz use xz as decompressor for stdin"
echo
echo "Report bugs to zutils-bug@nongnu.org"
echo "Zutils home page: http://www.nongnu.org/zutils/zutils.html"
@ -49,14 +45,6 @@ while [ x"$1" != x ] ; do
echo "This script is free software: you have unlimited permission"
echo "to copy, distribute and modify it."
exit 0 ;;
--gz*)
default_prog=gzip ;;
--bz*)
default_prog=bzip2 ;;
--lz*)
default_prog=lzip ;;
--xz*)
default_prog=xz ;;
- | -f)
;;
--)
@ -70,7 +58,16 @@ while [ x"$1" != x ] ; do
done
if [ $# = 0 ]; then
${default_prog} -cdfq | cat ${args}
bindir=`echo "$0" | sed -e 's,[^/]*$,,'`
prog_name=`"${bindir}"zutils -t`
case "${prog_name}" in
gzip) prog="gzip -cdfq" ;;
bzip2) prog="bzip2 -cdfq" ;;
lzip) prog="lzip -cdfq" ;;
xz) prog="xz -cdfq" ;;
*) prog=cat ;;
esac
{ "${bindir}"zutils -m ${prog_name} ; cat ; } | ${prog} | cat ${args}
exit $?
fi

View file

@ -8,7 +8,6 @@
LC_ALL=C
export LC_ALL
args=
default_prog=gzip
have_pat=0
list=0
no_name=0
@ -26,8 +25,9 @@ while [ x"$1" != x ] ; do
echo "files. If any given file is compressed, its uncompressed content is"
echo "used. If a given file does not exist, zgrep tries the compressed file"
echo "names corresponding to the supported compressors. If no files are"
echo "specified, the standard input is decompressed using the selected"
echo "compressor and fed to grep."
echo "specified, data is read from standard input, decompressed if needed, and"
echo "fed to grep. Data read from standard input must be of the same type; all"
echo "uncompressed or all compressed with the same compressor."
echo "The supported compressors are gzip, bzip2, lzip and xz."
echo
echo "Zegrep is a shortcut for \"zgrep -E\""
@ -41,10 +41,6 @@ while [ x"$1" != x ] ; do
echo "Options:"
echo " -h, --help display this help and exit"
echo " -V, --version output version information and exit"
echo " --gzip use gzip as decompressor for stdin (default)"
echo " --bzip2 use bzip2 as decompressor for stdin"
echo " --lzip use lzip as decompressor for stdin"
echo " --xz use xz as decompressor for stdin"
echo
echo "Report bugs to zutils-bug@nongnu.org"
echo "Zutils home page: http://www.nongnu.org/zutils/zutils.html"
@ -55,14 +51,6 @@ while [ x"$1" != x ] ; do
echo "This script is free software: you have unlimited permission"
echo "to copy, distribute and modify it."
exit 0 ;;
--gz*)
default_prog=gzip ;;
--bz*)
default_prog=bzip2 ;;
--lz*)
default_prog=lzip ;;
--xz*)
default_prog=xz ;;
-[drRzZ] | --di* | --exc* | --inc* | --nu* | --rec*)
echo "$0: option $1 not supported"
exit 1 ;;
@ -96,7 +84,16 @@ if [ ${have_pat} = 0 ]; then
fi
if [ $# = 0 ]; then
${default_prog} -cdfq | grep ${args}
bindir=`echo "$0" | sed -e 's,[^/]*$,,'`
prog_name=`"${bindir}"zutils -t`
case "${prog_name}" in
gzip) prog="gzip -cdfq" ;;
bzip2) prog="bzip2 -cdfq" ;;
lzip) prog="lzip -cdfq" ;;
xz) prog="xz -cdfq" ;;
*) prog=cat ;;
esac
{ "${bindir}"zutils -m ${prog_name} ; cat ; } | ${prog} | grep ${args}
exit $?
fi