in_file = l_in_file;
out_file = l_out_file;
- if (signal(SIGINT, SIG_IGN) != SIG_IGN) {
+/* if (signal(SIGINT, SIG_IGN) != SIG_IGN) {
(void) signal(SIGINT, (sig_type) abort_gzip);
}
#ifdef SIGTERM
(void) signal(SIGHUP, (sig_type) abort_gzip);
}
#endif
-
+*/
/* Allocate all global buffers (for DYN_ALLOC option) */
window = xmalloc((size_t)(((2L*WSIZE)+1L)*sizeof(unsigned char)));
outcnt = 0;
return 0;
}
-extern FILE *gz_open(FILE *compressed_file, int *pid)
+extern int gz_open(FILE *compressed_file, int *pid)
{
int unzip_pipe[2];
- signal(SIGCHLD, abort_gzip);
+// 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)
#ifdef BB_FEATURE_TAR_GZIP
extern int unzip(int in, int out);
+extern int gz_open(FILE *compressed_file, int *pid);
+extern void gz_close(int gunzip_pid);
#endif
/* Tar file constants */
char file[256];
#endif
#if defined BB_FEATURE_TAR_GZIP
+ FILE *comp_file = NULL;
int unzipFlag = FALSE;
#endif
int listFlag = FALSE;
int tostdoutFlag = FALSE;
int status = FALSE;
int opt;
+ pid_t pid;
if (argc <= 1)
show_usage();
#ifdef BB_FEATURE_TAR_GZIP
/* unzip tarFd in a seperate process */
- if (unzipFlag == TRUE)
- tarFd = tar_unzip_init(tarFd);
+ if (unzipFlag == TRUE) {
+ comp_file = fdopen(tarFd, "r");
+ printf("1\n");
+ if ((tarFd = gz_open(comp_file, &pid)) == EXIT_FAILURE) {
+ error_msg_and_die("Couldnt unzip file");
+ }
+ printf("2\n");
+ }
#endif
status = readTarFile(tarFd, extractFlag, listFlag, tostdoutFlag,
verboseFlag, extractList, excludeList);
+ close(tarFd);
}
+#ifdef BB_FEATURE_TAR_GZIP
+ gz_close(pid);
+ fclose(comp_file);
+#endif
+
if (status == TRUE)
return EXIT_SUCCESS;
else
in_file = l_in_file;
out_file = l_out_file;
- if (signal(SIGINT, SIG_IGN) != SIG_IGN) {
+/* if (signal(SIGINT, SIG_IGN) != SIG_IGN) {
(void) signal(SIGINT, (sig_type) abort_gzip);
}
#ifdef SIGTERM
(void) signal(SIGHUP, (sig_type) abort_gzip);
}
#endif
-
+*/
/* Allocate all global buffers (for DYN_ALLOC option) */
window = xmalloc((size_t)(((2L*WSIZE)+1L)*sizeof(unsigned char)));
outcnt = 0;
return 0;
}
-extern FILE *gz_open(FILE *compressed_file, int *pid)
+extern int gz_open(FILE *compressed_file, int *pid)
{
int unzip_pipe[2];
- signal(SIGCHLD, abort_gzip);
+// 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)
#ifdef BB_FEATURE_TAR_GZIP
extern int unzip(int in, int out);
+extern int gz_open(FILE *compressed_file, int *pid);
+extern void gz_close(int gunzip_pid);
#endif
/* Tar file constants */
char file[256];
#endif
#if defined BB_FEATURE_TAR_GZIP
+ FILE *comp_file = NULL;
int unzipFlag = FALSE;
#endif
int listFlag = FALSE;
int tostdoutFlag = FALSE;
int status = FALSE;
int opt;
+ pid_t pid;
if (argc <= 1)
show_usage();
#ifdef BB_FEATURE_TAR_GZIP
/* unzip tarFd in a seperate process */
- if (unzipFlag == TRUE)
- tarFd = tar_unzip_init(tarFd);
+ if (unzipFlag == TRUE) {
+ comp_file = fdopen(tarFd, "r");
+ printf("1\n");
+ if ((tarFd = gz_open(comp_file, &pid)) == EXIT_FAILURE) {
+ error_msg_and_die("Couldnt unzip file");
+ }
+ printf("2\n");
+ }
#endif
status = readTarFile(tarFd, extractFlag, listFlag, tostdoutFlag,
verboseFlag, extractList, excludeList);
+ close(tarFd);
}
+#ifdef BB_FEATURE_TAR_GZIP
+ gz_close(pid);
+ fclose(comp_file);
+#endif
+
if (status == TRUE)
return EXIT_SUCCESS;
else