summaryrefslogtreecommitdiff
path: root/libbb/gz_open.c
diff options
context:
space:
mode:
authorGlenn L McGrath <bug1@ihug.co.nz>2001-04-11 03:11:33 +0000
committerGlenn L McGrath <bug1@ihug.co.nz>2001-04-11 03:11:33 +0000
commit7fd92949d0d8106062a19b6017e6fecc0d825bb2 (patch)
treec5b8f228672bcc7af70af1cfc2535870f4016f71 /libbb/gz_open.c
parentd22e560ad6a3fe8bfbd23519935a1942cd510758 (diff)
downloadbusybox-w32-7fd92949d0d8106062a19b6017e6fecc0d825bb2.tar.gz
busybox-w32-7fd92949d0d8106062a19b6017e6fecc0d825bb2.tar.bz2
busybox-w32-7fd92949d0d8106062a19b6017e6fecc0d825bb2.zip
Move unzip, gz_open, gz_close to libbb
Diffstat (limited to 'libbb/gz_open.c')
-rw-r--r--libbb/gz_open.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/libbb/gz_open.c b/libbb/gz_open.c
new file mode 100644
index 000000000..1be5a171d
--- /dev/null
+++ b/libbb/gz_open.c
@@ -0,0 +1,34 @@
1#include <sys/types.h>
2#include <sys/wait.h>
3#include <signal.h>
4#include <stdlib.h>
5#include <string.h>
6#include <unistd.h>
7#include "libbb.h"
8
9extern int gz_open(FILE *compressed_file, int *pid)
10{
11 int unzip_pipe[2];
12
13 if (pipe(unzip_pipe)!=0) {
14 error_msg("pipe error");
15 return(EXIT_FAILURE);
16 }
17 if ((*pid = fork()) == -1) {
18 error_msg("fork failured");
19 return(EXIT_FAILURE);
20 }
21 if (*pid==0) {
22 /* child process */
23 close(unzip_pipe[0]);
24 unzip(compressed_file, fdopen(unzip_pipe[1], "w"));
25 printf("finished unzipping\n");
26 fflush(NULL);
27 fclose(compressed_file);
28 close(unzip_pipe[1]);
29 exit(EXIT_SUCCESS);
30 }
31
32 close(unzip_pipe[1]);
33 return(unzip_pipe[0]);
34} \ No newline at end of file