From eb1c94078f35d1b6e48741122c8bb9426befc5eb Mon Sep 17 00:00:00 2001 From: Glenn L McGrath Date: Wed, 20 Jun 2001 07:48:00 +0000 Subject: Reorganise unarchiving functions, more code re-use, only does single pass(no more linked lists), basis for supporting a cpio (and cheaper untar) applet, but cpio applet isnt included in this. It effects ar, dpkg-deb applets only --- libbb/gz_open.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'libbb/gz_open.c') diff --git a/libbb/gz_open.c b/libbb/gz_open.c index 19ec0a066..b23920b16 100644 --- a/libbb/gz_open.c +++ b/libbb/gz_open.c @@ -6,17 +6,17 @@ #include #include "libbb.h" -extern int gz_open(FILE *compressed_file, int *pid) +extern FILE *gz_open(FILE *compressed_file, int *pid) { int unzip_pipe[2]; if (pipe(unzip_pipe)!=0) { error_msg("pipe error"); - return(EXIT_FAILURE); + return(NULL); } if ((*pid = fork()) == -1) { error_msg("fork failured"); - return(EXIT_FAILURE); + return(NULL); } if (*pid==0) { /* child process */ @@ -27,7 +27,9 @@ extern int gz_open(FILE *compressed_file, int *pid) close(unzip_pipe[1]); exit(EXIT_SUCCESS); } - close(unzip_pipe[1]); - return(unzip_pipe[0]); -} \ No newline at end of file + if (unzip_pipe[0] == -1) { + error_msg("Couldnt initialise gzip stream"); + } + return(fdopen(unzip_pipe[0], "r")); +} -- cgit v1.2.3