Bunches of fixes. Typos, bugs, etc.
Added 'gunzip -t'. inittab support _almost_ works (but it isn't ready for prime time useage yet). -Erik
This commit is contained in:
32
gunzip.c
32
gunzip.c
@ -8,7 +8,8 @@ static const char gunzip_usage[] =
|
||||
"gunzip [OPTION]... FILE\n\n"
|
||||
"Uncompress FILE (or standard input if FILE is '-').\n\n"
|
||||
"Options:\n"
|
||||
"\t-c\tWrite output to standard output\n";
|
||||
"\t-c\tWrite output to standard output\n"
|
||||
"\t-t\tTest compressed file integrity\n";
|
||||
|
||||
/* gzip (GNU zip) -- compress files with zip algorithm and 'compress' interface
|
||||
* Copyright (C) 1992-1993 Jean-loup Gailly
|
||||
@ -653,7 +654,7 @@ DECLARE(uch, window, 2L*WSIZE);
|
||||
|
||||
/* local variables */
|
||||
|
||||
int force = 0; /* don't ask questions, compress links (-f) */
|
||||
int test_mode = 0; /* check file integrity option */
|
||||
int foreground; /* set if program run in foreground */
|
||||
int maxbits = BITS; /* max bits per code for LZW */
|
||||
int method = DEFLATED;/* compression method */
|
||||
@ -714,6 +715,10 @@ int gunzip_main (int argc, char** argv)
|
||||
case 'c':
|
||||
to_stdout = 1;
|
||||
break;
|
||||
case 't':
|
||||
test_mode = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
usage(gunzip_usage);
|
||||
}
|
||||
@ -786,6 +791,9 @@ int gunzip_main (int argc, char** argv)
|
||||
/* Actually do the compression/decompression. */
|
||||
unzip(inFileNum, outFileNum);
|
||||
|
||||
} else if (test_mode) {
|
||||
/* Actually do the compression/decompression. */
|
||||
unzip(inFileNum, 2);
|
||||
} else {
|
||||
char* pos;
|
||||
|
||||
@ -857,17 +865,8 @@ local int get_method(in)
|
||||
uch flags; /* compression flags */
|
||||
char magic[2]; /* magic header */
|
||||
|
||||
/* If --force and --stdout, zcat == cat, so do not complain about
|
||||
* premature end of file: use try_byte instead of get_byte.
|
||||
*/
|
||||
if (force) {
|
||||
magic[0] = (char)try_byte();
|
||||
magic[1] = (char)try_byte();
|
||||
/* If try_byte returned EOF, magic[1] == 0xff */
|
||||
} else {
|
||||
magic[0] = (char)get_byte();
|
||||
magic[1] = (char)get_byte();
|
||||
}
|
||||
magic[0] = (char)get_byte();
|
||||
magic[1] = (char)get_byte();
|
||||
method = -1; /* unknown yet */
|
||||
part_nb++; /* number of parts in gzip file */
|
||||
header_bytes = 0;
|
||||
@ -1188,7 +1187,8 @@ void flush_outbuf()
|
||||
{
|
||||
if (outcnt == 0) return;
|
||||
|
||||
write_buf(ofd, (char *)outbuf, outcnt);
|
||||
if (!test_mode)
|
||||
write_buf(ofd, (char *)outbuf, outcnt);
|
||||
bytes_out += (ulg)outcnt;
|
||||
outcnt = 0;
|
||||
}
|
||||
@ -1202,8 +1202,8 @@ void flush_window()
|
||||
if (outcnt == 0) return;
|
||||
updcrc(window, outcnt);
|
||||
|
||||
write_buf(ofd, (char *)window, outcnt);
|
||||
|
||||
if (!test_mode)
|
||||
write_buf(ofd, (char *)window, outcnt);
|
||||
bytes_out += (ulg)outcnt;
|
||||
outcnt = 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user