summaryrefslogtreecommitdiff
path: root/archival/libunarchive/get_header_tar_bz2.c
diff options
context:
space:
mode:
Diffstat (limited to 'archival/libunarchive/get_header_tar_bz2.c')
-rw-r--r--archival/libunarchive/get_header_tar_bz2.c42
1 files changed, 1 insertions, 41 deletions
diff --git a/archival/libunarchive/get_header_tar_bz2.c b/archival/libunarchive/get_header_tar_bz2.c
index 6354648..d49d6b9 100644
--- a/archival/libunarchive/get_header_tar_bz2.c
+++ b/archival/libunarchive/get_header_tar_bz2.c
@@ -26,53 +26,13 @@
extern char get_header_tar_bz2(archive_handle_t *archive_handle)
{
- int fd_pipe[2];
- int pid;
-
/* Cant lseek over pipe's */
- archive_handle->read = safe_read;
archive_handle->seek = seek_by_char;
- if (pipe(fd_pipe) != 0) {
- bb_error_msg_and_die("Can't create pipe");
- }
-
- pid = fork();
- if (pid == -1) {
- bb_error_msg_and_die("Fork failed\n");
- }
-
- if (pid == 0) {
- /* child process */
- int status;
-
- close(fd_pipe[0]); /* We don't wan't to read from the pipe */
- uncompressStream(archive_handle->src_fd, fd_pipe[1]);
- close(fd_pipe[1]); /* Send EOF */
- exit(status);
- /* notreached */
- }
- /* parent process */
- close(fd_pipe[1]); /* Don't want to write down the pipe */
- close(archive_handle->src_fd);
-
- archive_handle->src_fd = fd_pipe[0];
-
+ archive_handle->src_fd = open_transformer(archive_handle->src_fd, uncompressStream);
archive_handle->offset = 0;
while (get_header_tar(archive_handle) == EXIT_SUCCESS);
- close(fd_pipe[0]);
-#if 0
- if (kill(pid, SIGTERM) == -1) {
- bb_error_msg_and_die("Couldnt kill gunzip process");
- }
-#endif
-
- /* I dont think this is needed */
- if (waitpid(pid, NULL, 0) == -1) {
- bb_error_msg("Couldnt wait ?");
- }
-
/* Can only do one file at a time */
return(EXIT_FAILURE);
}