Introduce new function gunzip_init()
gunzip_init() will make it easier to use gunzip from other bb functions.
This commit is contained in:
parent
c52a97d79f
commit
00732b57c7
@ -1176,10 +1176,43 @@ void clear_bufs(void)
|
|||||||
bytes_in = bytes_out = 0L;
|
bytes_in = bytes_out = 0L;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ===========================================================================
|
||||||
|
* Initialize gunzip buffers and signals
|
||||||
|
*/
|
||||||
|
static int gunzip_init()
|
||||||
|
{
|
||||||
|
foreground = signal(SIGINT, SIG_IGN) != SIG_IGN;
|
||||||
|
if (foreground) {
|
||||||
|
(void) signal(SIGINT, (sig_type) abort_gzip);
|
||||||
|
}
|
||||||
|
#ifdef SIGTERM
|
||||||
|
if (signal(SIGTERM, SIG_IGN) != SIG_IGN) {
|
||||||
|
(void) signal(SIGTERM, (sig_type) abort_gzip);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef SIGHUP
|
||||||
|
if (signal(SIGHUP, SIG_IGN) != SIG_IGN) {
|
||||||
|
(void) signal(SIGHUP, (sig_type) abort_gzip);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Allocate all global buffers (for DYN_ALLOC option) */
|
||||||
|
inbuf = xmalloc((size_t)((INBUFSIZ+INBUF_EXTRA+1L)*sizeof(uch)));
|
||||||
|
outbuf = xmalloc((size_t)((OUTBUFSIZ+OUTBUF_EXTRA+1L)*sizeof(uch)));
|
||||||
|
d_buf = xmalloc((size_t)((DIST_BUFSIZE+1L)*sizeof(ush)));
|
||||||
|
window = xmalloc((size_t)(((2L*WSIZE)+1L)*sizeof(uch)));
|
||||||
|
tab_prefix0 = xmalloc((size_t)(((1L<<(BITS-1))+1L)*sizeof(ush)));
|
||||||
|
tab_prefix1 = xmalloc((size_t)(((1L<<(BITS-1))+1L)*sizeof(ush)));
|
||||||
|
|
||||||
|
clear_bufs(); /* clear input and output buffers */
|
||||||
|
part_nb = 0;
|
||||||
|
return(EXIT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ======================================================================== */
|
/* ======================================================================== */
|
||||||
int gunzip_main(int argc, char **argv)
|
int gunzip_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int file_count; /* number of files to precess */
|
|
||||||
int tostdout = 0;
|
int tostdout = 0;
|
||||||
int fromstdin = 0;
|
int fromstdin = 0;
|
||||||
int result;
|
int result;
|
||||||
@ -1229,31 +1262,7 @@ int gunzip_main(int argc, char **argv)
|
|||||||
if (isatty(fileno(stdout)) && tostdout==1 && force==0)
|
if (isatty(fileno(stdout)) && tostdout==1 && force==0)
|
||||||
error_msg_and_die( "data not written to terminal. Use -f to force it.\n");
|
error_msg_and_die( "data not written to terminal. Use -f to force it.\n");
|
||||||
|
|
||||||
|
gunzip_init();
|
||||||
foreground = signal(SIGINT, SIG_IGN) != SIG_IGN;
|
|
||||||
if (foreground) {
|
|
||||||
(void) signal(SIGINT, (sig_type) abort_gzip);
|
|
||||||
}
|
|
||||||
#ifdef SIGTERM
|
|
||||||
if (signal(SIGTERM, SIG_IGN) != SIG_IGN) {
|
|
||||||
(void) signal(SIGTERM, (sig_type) abort_gzip);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef SIGHUP
|
|
||||||
if (signal(SIGHUP, SIG_IGN) != SIG_IGN) {
|
|
||||||
(void) signal(SIGHUP, (sig_type) abort_gzip);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
file_count = argc - optind;
|
|
||||||
|
|
||||||
/* Allocate all global buffers (for DYN_ALLOC option) */
|
|
||||||
inbuf = xmalloc((size_t)((INBUFSIZ+INBUF_EXTRA+1L)*sizeof(uch)));
|
|
||||||
outbuf = xmalloc((size_t)((OUTBUFSIZ+OUTBUF_EXTRA+1L)*sizeof(uch)));
|
|
||||||
d_buf = xmalloc((size_t)((DIST_BUFSIZE+1L)*sizeof(ush)));
|
|
||||||
window = xmalloc((size_t)(((2L*WSIZE)+1L)*sizeof(uch)));
|
|
||||||
tab_prefix0 = xmalloc((size_t)(((1L<<(BITS-1))+1L)*sizeof(ush)));
|
|
||||||
tab_prefix1 = xmalloc((size_t)(((1L<<(BITS-1))+1L)*sizeof(ush)));
|
|
||||||
|
|
||||||
if (fromstdin == 1) {
|
if (fromstdin == 1) {
|
||||||
strcpy(ofname, "stdin");
|
strcpy(ofname, "stdin");
|
||||||
@ -1290,9 +1299,6 @@ int gunzip_main(int argc, char **argv)
|
|||||||
strcpy(ofname, "stdout");
|
strcpy(ofname, "stdout");
|
||||||
outFileNum = fileno(stdout);
|
outFileNum = fileno(stdout);
|
||||||
|
|
||||||
clear_bufs(); /* clear input and output buffers */
|
|
||||||
part_nb = 0;
|
|
||||||
|
|
||||||
/* Actually do the compression/decompression. */
|
/* Actually do the compression/decompression. */
|
||||||
unzip(inFileNum, outFileNum);
|
unzip(inFileNum, outFileNum);
|
||||||
|
|
||||||
@ -1334,9 +1340,6 @@ int gunzip_main(int argc, char **argv)
|
|||||||
/* Set permissions on the file */
|
/* Set permissions on the file */
|
||||||
fchmod(outFileNum, statBuf.st_mode);
|
fchmod(outFileNum, statBuf.st_mode);
|
||||||
|
|
||||||
clear_bufs(); /* clear input and output buffers */
|
|
||||||
part_nb = 0;
|
|
||||||
|
|
||||||
/* Actually do the compression/decompression. */
|
/* Actually do the compression/decompression. */
|
||||||
result = unzip(inFileNum, outFileNum);
|
result = unzip(inFileNum, outFileNum);
|
||||||
|
|
||||||
|
67
gunzip.c
67
gunzip.c
@ -1176,10 +1176,43 @@ void clear_bufs(void)
|
|||||||
bytes_in = bytes_out = 0L;
|
bytes_in = bytes_out = 0L;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ===========================================================================
|
||||||
|
* Initialize gunzip buffers and signals
|
||||||
|
*/
|
||||||
|
static int gunzip_init()
|
||||||
|
{
|
||||||
|
foreground = signal(SIGINT, SIG_IGN) != SIG_IGN;
|
||||||
|
if (foreground) {
|
||||||
|
(void) signal(SIGINT, (sig_type) abort_gzip);
|
||||||
|
}
|
||||||
|
#ifdef SIGTERM
|
||||||
|
if (signal(SIGTERM, SIG_IGN) != SIG_IGN) {
|
||||||
|
(void) signal(SIGTERM, (sig_type) abort_gzip);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef SIGHUP
|
||||||
|
if (signal(SIGHUP, SIG_IGN) != SIG_IGN) {
|
||||||
|
(void) signal(SIGHUP, (sig_type) abort_gzip);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Allocate all global buffers (for DYN_ALLOC option) */
|
||||||
|
inbuf = xmalloc((size_t)((INBUFSIZ+INBUF_EXTRA+1L)*sizeof(uch)));
|
||||||
|
outbuf = xmalloc((size_t)((OUTBUFSIZ+OUTBUF_EXTRA+1L)*sizeof(uch)));
|
||||||
|
d_buf = xmalloc((size_t)((DIST_BUFSIZE+1L)*sizeof(ush)));
|
||||||
|
window = xmalloc((size_t)(((2L*WSIZE)+1L)*sizeof(uch)));
|
||||||
|
tab_prefix0 = xmalloc((size_t)(((1L<<(BITS-1))+1L)*sizeof(ush)));
|
||||||
|
tab_prefix1 = xmalloc((size_t)(((1L<<(BITS-1))+1L)*sizeof(ush)));
|
||||||
|
|
||||||
|
clear_bufs(); /* clear input and output buffers */
|
||||||
|
part_nb = 0;
|
||||||
|
return(EXIT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ======================================================================== */
|
/* ======================================================================== */
|
||||||
int gunzip_main(int argc, char **argv)
|
int gunzip_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int file_count; /* number of files to precess */
|
|
||||||
int tostdout = 0;
|
int tostdout = 0;
|
||||||
int fromstdin = 0;
|
int fromstdin = 0;
|
||||||
int result;
|
int result;
|
||||||
@ -1229,31 +1262,7 @@ int gunzip_main(int argc, char **argv)
|
|||||||
if (isatty(fileno(stdout)) && tostdout==1 && force==0)
|
if (isatty(fileno(stdout)) && tostdout==1 && force==0)
|
||||||
error_msg_and_die( "data not written to terminal. Use -f to force it.\n");
|
error_msg_and_die( "data not written to terminal. Use -f to force it.\n");
|
||||||
|
|
||||||
|
gunzip_init();
|
||||||
foreground = signal(SIGINT, SIG_IGN) != SIG_IGN;
|
|
||||||
if (foreground) {
|
|
||||||
(void) signal(SIGINT, (sig_type) abort_gzip);
|
|
||||||
}
|
|
||||||
#ifdef SIGTERM
|
|
||||||
if (signal(SIGTERM, SIG_IGN) != SIG_IGN) {
|
|
||||||
(void) signal(SIGTERM, (sig_type) abort_gzip);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef SIGHUP
|
|
||||||
if (signal(SIGHUP, SIG_IGN) != SIG_IGN) {
|
|
||||||
(void) signal(SIGHUP, (sig_type) abort_gzip);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
file_count = argc - optind;
|
|
||||||
|
|
||||||
/* Allocate all global buffers (for DYN_ALLOC option) */
|
|
||||||
inbuf = xmalloc((size_t)((INBUFSIZ+INBUF_EXTRA+1L)*sizeof(uch)));
|
|
||||||
outbuf = xmalloc((size_t)((OUTBUFSIZ+OUTBUF_EXTRA+1L)*sizeof(uch)));
|
|
||||||
d_buf = xmalloc((size_t)((DIST_BUFSIZE+1L)*sizeof(ush)));
|
|
||||||
window = xmalloc((size_t)(((2L*WSIZE)+1L)*sizeof(uch)));
|
|
||||||
tab_prefix0 = xmalloc((size_t)(((1L<<(BITS-1))+1L)*sizeof(ush)));
|
|
||||||
tab_prefix1 = xmalloc((size_t)(((1L<<(BITS-1))+1L)*sizeof(ush)));
|
|
||||||
|
|
||||||
if (fromstdin == 1) {
|
if (fromstdin == 1) {
|
||||||
strcpy(ofname, "stdin");
|
strcpy(ofname, "stdin");
|
||||||
@ -1290,9 +1299,6 @@ int gunzip_main(int argc, char **argv)
|
|||||||
strcpy(ofname, "stdout");
|
strcpy(ofname, "stdout");
|
||||||
outFileNum = fileno(stdout);
|
outFileNum = fileno(stdout);
|
||||||
|
|
||||||
clear_bufs(); /* clear input and output buffers */
|
|
||||||
part_nb = 0;
|
|
||||||
|
|
||||||
/* Actually do the compression/decompression. */
|
/* Actually do the compression/decompression. */
|
||||||
unzip(inFileNum, outFileNum);
|
unzip(inFileNum, outFileNum);
|
||||||
|
|
||||||
@ -1334,9 +1340,6 @@ int gunzip_main(int argc, char **argv)
|
|||||||
/* Set permissions on the file */
|
/* Set permissions on the file */
|
||||||
fchmod(outFileNum, statBuf.st_mode);
|
fchmod(outFileNum, statBuf.st_mode);
|
||||||
|
|
||||||
clear_bufs(); /* clear input and output buffers */
|
|
||||||
part_nb = 0;
|
|
||||||
|
|
||||||
/* Actually do the compression/decompression. */
|
/* Actually do the compression/decompression. */
|
||||||
result = unzip(inFileNum, outFileNum);
|
result = unzip(inFileNum, outFileNum);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user