Merging upstream version 1.15.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
ba8e0a83c7
commit
60d97c7cb2
24 changed files with 310 additions and 146 deletions
32
zcmp.cc
32
zcmp.cc
|
@ -93,17 +93,17 @@ void show_help()
|
|||
|
||||
|
||||
// separate numbers of 5 or more digits in groups of 3 digits using '_'
|
||||
const char * format_num3( long long num )
|
||||
const char * format_num3p( long long num )
|
||||
{
|
||||
enum { buffers = 8, bufsize = 4 * sizeof num, n = 10 };
|
||||
const char * const si_prefix = "kMGTPEZYRQ";
|
||||
const char * const binary_prefix = "KMGTPEZYRQ";
|
||||
static char buffer[buffers][bufsize]; // circle of static buffers for printf
|
||||
static char buffer[buffers][bufsize]; // circle of buffers for printf
|
||||
static int current = 0;
|
||||
|
||||
char * const buf = buffer[current++]; current %= buffers;
|
||||
char * p = buf + bufsize - 1; // fill the buffer backwards
|
||||
*p = 0; // terminator
|
||||
*p = 0; // terminator
|
||||
const bool negative = num < 0;
|
||||
if( num > 9999 || num < -9999 )
|
||||
{
|
||||
|
@ -180,8 +180,8 @@ long long getnum( const char * const arg, const char * const option_name,
|
|||
{
|
||||
if( verbosity >= 0 )
|
||||
std::fprintf( stderr, "%s: '%s': Value out of limits [%s,%s] in "
|
||||
"option '%s'.\n", program_name, arg, format_num3( llimit ),
|
||||
format_num3( ulimit ), option_name );
|
||||
"option '%s'.\n", program_name, arg, format_num3p( llimit ),
|
||||
format_num3p( ulimit ), option_name );
|
||||
std::exit( 2 );
|
||||
}
|
||||
if( tailp ) *tailp = tail;
|
||||
|
@ -372,7 +372,6 @@ done:
|
|||
|
||||
int main( const int argc, const char * const argv[] )
|
||||
{
|
||||
enum { bz2_opt = 256, gz_opt, lz_opt, xz_opt, zst_opt };
|
||||
// number of initial bytes ignored for each file
|
||||
long long ignore_initial[2] = { 0, 0 };
|
||||
long long max_size = -1; // < 0 means unlimited size
|
||||
|
@ -384,6 +383,7 @@ int main( const int argc, const char * const argv[] )
|
|||
program_name = "zcmp";
|
||||
invocation_name = ( argc > 0 ) ? argv[0] : program_name;
|
||||
|
||||
enum { opt_bz2 = 256, opt_gz, opt_lz, opt_xz, opt_zst };
|
||||
const Arg_parser::Option options[] =
|
||||
{
|
||||
{ 'b', "print-bytes", Arg_parser::no },
|
||||
|
@ -400,11 +400,11 @@ int main( const int argc, const char * const argv[] )
|
|||
{ 's', "script", Arg_parser::no },
|
||||
{ 'v', "verbose", Arg_parser::no },
|
||||
{ 'V', "version", Arg_parser::no },
|
||||
{ bz2_opt, "bz2", Arg_parser::yes },
|
||||
{ gz_opt, "gz", Arg_parser::yes },
|
||||
{ lz_opt, "lz", Arg_parser::yes },
|
||||
{ xz_opt, "xz", Arg_parser::yes },
|
||||
{ zst_opt, "zst", Arg_parser::yes },
|
||||
{ opt_bz2, "bz2", Arg_parser::yes },
|
||||
{ opt_gz, "gz", Arg_parser::yes },
|
||||
{ opt_lz, "lz", Arg_parser::yes },
|
||||
{ opt_xz, "xz", Arg_parser::yes },
|
||||
{ opt_zst, "zst", Arg_parser::yes },
|
||||
{ 0, 0, Arg_parser::no } };
|
||||
|
||||
const Arg_parser parser( argc, argv, options );
|
||||
|
@ -436,11 +436,11 @@ int main( const int argc, const char * const argv[] )
|
|||
case 's': scripted = true; break;
|
||||
case 'v': if( verbosity < 4 ) ++verbosity; break;
|
||||
case 'V': show_version(); return 0;
|
||||
case bz2_opt: parse_compressor( sarg, pn, fmt_bz2 ); break;
|
||||
case gz_opt: parse_compressor( sarg, pn, fmt_gz ); break;
|
||||
case lz_opt: parse_compressor( sarg, pn, fmt_lz ); break;
|
||||
case xz_opt: parse_compressor( sarg, pn, fmt_xz ); break;
|
||||
case zst_opt: parse_compressor( sarg, pn, fmt_zst ); break;
|
||||
case opt_bz2: parse_compressor( sarg, pn, fmt_bz2 ); break;
|
||||
case opt_gz: parse_compressor( sarg, pn, fmt_gz ); break;
|
||||
case opt_lz: parse_compressor( sarg, pn, fmt_lz ); break;
|
||||
case opt_xz: parse_compressor( sarg, pn, fmt_xz ); break;
|
||||
case opt_zst: parse_compressor( sarg, pn, fmt_zst ); break;
|
||||
default: internal_error( "uncaught option." );
|
||||
}
|
||||
} // end process options
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue