diff options
author | Glenn L McGrath | 2001-04-11 03:11:33 +0000 |
---|---|---|
committer | Glenn L McGrath | 2001-04-11 03:11:33 +0000 |
commit | 7fd92949d0d8106062a19b6017e6fecc0d825bb2 (patch) | |
tree | c5b8f228672bcc7af70af1cfc2535870f4016f71 /libbb/gz_open.c | |
parent | d22e560ad6a3fe8bfbd23519935a1942cd510758 (diff) | |
download | busybox-7fd92949d0d8106062a19b6017e6fecc0d825bb2.zip busybox-7fd92949d0d8106062a19b6017e6fecc0d825bb2.tar.gz |
Move unzip, gz_open, gz_close to libbb
Diffstat (limited to 'libbb/gz_open.c')
-rw-r--r-- | libbb/gz_open.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/libbb/gz_open.c b/libbb/gz_open.c new file mode 100644 index 0000000..1be5a17 --- /dev/null +++ b/libbb/gz_open.c @@ -0,0 +1,34 @@ +#include <sys/types.h> +#include <sys/wait.h> +#include <signal.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include "libbb.h" + +extern int gz_open(FILE *compressed_file, int *pid) +{ + int unzip_pipe[2]; + + if (pipe(unzip_pipe)!=0) { + error_msg("pipe error"); + return(EXIT_FAILURE); + } + if ((*pid = fork()) == -1) { + error_msg("fork failured"); + return(EXIT_FAILURE); + } + if (*pid==0) { + /* child process */ + close(unzip_pipe[0]); + unzip(compressed_file, fdopen(unzip_pipe[1], "w")); + printf("finished unzipping\n"); + fflush(NULL); + fclose(compressed_file); + close(unzip_pipe[1]); + exit(EXIT_SUCCESS); + } + + close(unzip_pipe[1]); + return(unzip_pipe[0]); +}
\ No newline at end of file |