X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=gunzip.c;h=51541f15553ed8b66029b660d7786800c3782009;hb=3a6da8c183142a2681a2382b63e970f457cf807b;hp=e9f7648822b8523a10b220e05b11fe513f5bc506;hpb=58e42d5356bfbb8ed817a782901bf52d9b8f54bf;p=oweals%2Fbusybox.git diff --git a/gunzip.c b/gunzip.c index e9f764882..51541f155 100644 --- a/gunzip.c +++ b/gunzip.c @@ -126,11 +126,11 @@ unsigned short mask_bits[] = { /* ======================================================================== * Signal and error handler. */ + static void abort_gzip() { error_msg("gzip aborted\n"); -// exit(ERROR); - return; + exit(ERROR); } static void make_crc_table() @@ -432,7 +432,6 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) if (e == 16) { /* then it's a literal */ window[w++] = (unsigned char) t->v.n; if (w == WSIZE) { -// flush_output(w); outcnt=(w), flush_window(); w = 0; @@ -1018,33 +1017,32 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file) return 0; } -extern FILE *gz_open(FILE *compressed_file, int *pid) +#ifdef BB_FEATURE_TAR_GZIP +extern int gz_open(FILE *compressed_file, int *pid) { int unzip_pipe[2]; - signal(SIGCHLD, abort_gzip); if (pipe(unzip_pipe)!=0) { error_msg("pipe error"); - return NULL; + return(EXIT_FAILURE); } if ((*pid = fork()) == -1) { error_msg("fork failured"); - return NULL; + return(EXIT_FAILURE); } if (*pid==0) { /* child process */ close(unzip_pipe[0]); unzip(compressed_file, fdopen(unzip_pipe[1], "w")); -// printf("finished unzipping\n"); + printf("finished unzipping\n"); fflush(NULL); -// printf("fluched\n"); fclose(compressed_file); close(unzip_pipe[1]); exit(EXIT_SUCCESS); } close(unzip_pipe[1]); - return (fdopen(unzip_pipe[0], "r")); + return(unzip_pipe[0]); } extern void gz_close(int gunzip_pid) @@ -1059,6 +1057,7 @@ extern void gz_close(int gunzip_pid) free(window); free(crc_table); } +#endif extern int gunzip_main(int argc, char **argv) { @@ -1077,38 +1076,35 @@ extern int gunzip_main(int argc, char **argv) int opt = 0; int delete_old_file = FALSE; -#ifdef BB_ZCAT /* if called as zcat */ if (strcmp(applet_name, "zcat") == 0) { if (argc != 2) { show_usage(); } - flags |= gunzip_force; - flags |= gunzip_to_stdout; - } else -#endif - { + optind = 1; + flags |= (gunzip_force | gunzip_to_stdout); + } else { /* workout flags as regular gunzip */ /* set default flags */ if (argc == 1) { flags |= (gunzip_from_stdin | gunzip_to_stdout); - } - - /* Parse any options */ - while ((opt = getopt(argc, argv, "ctfh")) != -1) { - switch (opt) { - case 'c': - flags |= gunzip_to_stdout; - break; - case 'f': - flags |= gunzip_force; - break; - case 't': - flags |= gunzip_test; - break; - case 'h': - default: - show_usage(); /* exit's inside usage */ + } else { + /* Parse any options */ + while ((opt = getopt(argc, argv, "ctfh")) != -1) { + switch (opt) { + case 'c': + flags |= gunzip_to_stdout; + break; + case 'f': + flags |= gunzip_force; + break; + case 't': + flags |= gunzip_test; + break; + case 'h': + default: + show_usage(); /* exit's inside usage */ + } } } } @@ -1119,7 +1115,6 @@ extern int gunzip_main(int argc, char **argv) if ((flags & gunzip_force) == 0) { error_msg_and_die("data not written to terminal. Use -f to force it."); } - strcpy(if_name, "stdin"); } else { if_name = strdup(argv[optind]); /* Open input file */ @@ -1138,8 +1133,6 @@ extern int gunzip_main(int argc, char **argv) if (isatty(fileno(out_file)) && ((flags & gunzip_force) == 0)) { error_msg_and_die("data not written to terminal. Use -f to force it."); } - - strcpy(of_name, "stdout"); } else if (flags & gunzip_test) { out_file = xfopen("/dev/null", "w"); /* why does test use filenum 2 ? */ } else {