diff options
author | Glenn L McGrath | 2001-06-20 07:48:00 +0000 |
---|---|---|
committer | Glenn L McGrath | 2001-06-20 07:48:00 +0000 |
commit | eb1c94078f35d1b6e48741122c8bb9426befc5eb (patch) | |
tree | 48535c1f250f98707e595cfb83f47c83332c4fc9 /libbb/gz_open.c | |
parent | b4a26e6fc09e9dd14ca206f8d9ed2c6e8976df1b (diff) | |
download | busybox-eb1c94078f35d1b6e48741122c8bb9426befc5eb.zip busybox-eb1c94078f35d1b6e48741122c8bb9426befc5eb.tar.gz |
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
Diffstat (limited to 'libbb/gz_open.c')
-rw-r--r-- | libbb/gz_open.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/libbb/gz_open.c b/libbb/gz_open.c index 19ec0a0..b23920b 100644 --- a/libbb/gz_open.c +++ b/libbb/gz_open.c @@ -6,17 +6,17 @@ #include <unistd.h> #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")); +} |