diff options
author | graham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358> | 2009-11-15 03:59:19 (EST) |
---|---|---|
committer | graham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358> | 2009-11-15 03:59:19 (EST) |
commit | 19cda406126b0012a5cd9509ada41795846732ef (patch) | |
tree | 6bb6054b04abb892686893312ee5302a52b0b82e /libbb | |
parent | d09832770a367d0a77c92dd77336330a47cac75a (diff) |
Cleanup gz_close().
- Don't try to free() memory in a different process!
- Move the function to a more appropriate file.
- Fix error messages while here.
git-svn-id: http://opkg.googlecode.com/svn/trunk@305 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/gz_open.c | 18 | ||||
-rw-r--r-- | libbb/unzip.c | 16 |
2 files changed, 13 insertions, 21 deletions
diff --git a/libbb/gz_open.c b/libbb/gz_open.c index dbaf3bb..0ed1417 100644 --- a/libbb/gz_open.c +++ b/libbb/gz_open.c @@ -34,11 +34,11 @@ extern FILE *gz_open(FILE *compressed_file, int *pid) int unzip_pipe[2]; if (pipe(unzip_pipe)!=0) { - error_msg("pipe error"); + perror_msg("%s: pipe: ", __FUNCTION__); return(NULL); } if ((*pid = fork()) == -1) { - error_msg("fork failed"); + perror_msg("%s: fork: ", __FUNCTION__); return(NULL); } if (*pid==0) { @@ -51,8 +51,16 @@ extern FILE *gz_open(FILE *compressed_file, int *pid) exit(EXIT_SUCCESS); } close(unzip_pipe[1]); - if (unzip_pipe[0] == -1) { - error_msg("gzip stream init failed"); - } return(fdopen(unzip_pipe[0], "r")); } + +extern void gz_close(int gunzip_pid) +{ + if (kill(gunzip_pid, SIGTERM) == -1) { + perror_msg_and_die("%s: kill(gunzip_pid): ", __FUNCTION__); + } + + if (waitpid(gunzip_pid, NULL, 0) == -1) { + perror_msg("%s wait: ", __FUNCTION__); + } +} diff --git a/libbb/unzip.c b/libbb/unzip.c index 08c17d4..20a4d74 100644 --- a/libbb/unzip.c +++ b/libbb/unzip.c @@ -1005,19 +1005,3 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file) return exit_code; } - -/* - * This needs access to global variables wondow and crc_table, so its not in its own file. - */ -extern void gz_close(int gunzip_pid) -{ - if (kill(gunzip_pid, SIGTERM) == -1) { - error_msg_and_die("*** Couldnt kill old gunzip process *** aborting"); - } - - if (waitpid(gunzip_pid, NULL, 0) == -1) { - printf("Couldnt wait ?"); - } - free(window); - free(crc_table); -} |