diff options
author | Matt Kraai | 2002-03-27 17:46:44 +0000 |
---|---|---|
committer | Matt Kraai | 2002-03-27 17:46:44 +0000 |
commit | cf32ac543c618dec10a01a14744cee6e306d430e (patch) | |
tree | 4f91dbf1dbce9140ecf4504f2005be1101a6d811 | |
parent | 35d60421b4f61de9f5ed39c3057555e6f64d75a7 (diff) | |
download | busybox-cf32ac543c618dec10a01a14744cee6e306d430e.zip busybox-cf32ac543c618dec10a01a14744cee6e306d430e.tar.gz |
* archival/bunzip2.c (bunzip2_main): Remove compressed file.
* testsuite/bunzip2/bunzip2-removes-compressed-file: New.
-rw-r--r-- | archival/bunzip2.c | 21 | ||||
-rw-r--r-- | testsuite/bunzip2/bunzip2-removes-compressed-file | 3 |
2 files changed, 22 insertions, 2 deletions
diff --git a/archival/bunzip2.c b/archival/bunzip2.c index 678779e..a7b41b7 100644 --- a/archival/bunzip2.c +++ b/archival/bunzip2.c @@ -2323,10 +2323,12 @@ int bunzip2_main(int argc, char **argv) const int bunzip_force = 2; int flags = 0; int opt = 0; + int status; FILE *src_stream; FILE *dst_stream; char *save_name = NULL; + char *delete_name = NULL; /* if called as bzcat */ if (strcmp(applet_name, "bzcat") == 0) @@ -2369,7 +2371,22 @@ int bunzip2_main(int argc, char **argv) } else { dst_stream = xfopen(save_name, "w"); } - uncompressStream(src_stream, dst_stream); - return(TRUE); + if (uncompressStream(src_stream, dst_stream)) { + if (save_name != NULL) + delete_name = argv[optind]; + status = EXIT_SUCCESS; + } else { + if (save_name != NULL) + delete_name = save_name; + status = EXIT_FAILURE; + } + + if (delete_name) { + if (unlink(delete_name) < 0) { + error_msg_and_die("Couldn't remove %s", delete_name); + } + } + + return status; } diff --git a/testsuite/bunzip2/bunzip2-removes-compressed-file b/testsuite/bunzip2/bunzip2-removes-compressed-file new file mode 100644 index 0000000..f1d1550 --- /dev/null +++ b/testsuite/bunzip2/bunzip2-removes-compressed-file @@ -0,0 +1,3 @@ +echo foo | bzip2 >foo.bz2 +busybox bunzip2 foo.bz2 +test ! -f foo.bz2 |