diff options
Diffstat (limited to 'archival')
-rw-r--r-- | archival/gunzip.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/archival/gunzip.c b/archival/gunzip.c index 032b43c2c..83ed5e84a 100644 --- a/archival/gunzip.c +++ b/archival/gunzip.c @@ -75,7 +75,7 @@ static int gunzip_file (const char *path, int flags) { FILE *in_file, *out_file; struct stat stat_buf; - const char *delete_path; + const char *delete_path = NULL; char *out_path = NULL; if (path == NULL || strcmp (path, "-") == 0) { @@ -142,8 +142,10 @@ static int gunzip_file (const char *path, int flags) delete_path = out_path; } - fclose(out_file); - fclose(in_file); + if (out_file != stdout) + fclose(out_file); + if (in_file != stdin) + fclose(in_file); if (delete_path && !(flags & gunzip_test)) { if (unlink(delete_path) < 0) { @@ -194,10 +196,11 @@ extern int gunzip_main(int argc, char **argv) if (optind == argc) { if (gunzip_file (NULL, flags) < 0) status = EXIT_FAILURE; - } else - for (i = optind; i < argc; i++) + } else { + for (i = optind; i < argc; i++) { if (gunzip_file (argv[i], flags) < 0) status = EXIT_FAILURE; - + } + } return status; } |