Don't delete outfile unconditionally.

MFC after:	1 month
This commit is contained in:
delphij 2018-07-09 06:19:33 +00:00
parent 480f8d152d
commit 66e8cfde23

View File

@ -1429,6 +1429,7 @@ file_uncompress(char *file, char *outfile, size_t outsize)
unsigned char header1[4];
enum filetype method;
int fd, ofd, zfd = -1;
int err;
size_t in_size;
#ifndef SMALL
ssize_t rv;
@ -1601,14 +1602,21 @@ file_uncompress(char *file, char *outfile, size_t outsize)
size = zuncompress(in, out, NULL, 0, NULL);
/* need to fclose() if ferror() is true... */
if (ferror(in) | fclose(in)) {
maybe_warn("failed infile fclose");
unlink(outfile);
err = ferror(in);
if (err | fclose(in)) {
if (err)
maybe_warn("failed infile");
else
maybe_warn("failed infile fclose");
if (cflag == 0)
unlink(outfile);
(void)fclose(out);
goto lose;
}
if (fclose(out) != 0) {
maybe_warn("failed outfile fclose");
unlink(outfile);
if (cflag == 0)
unlink(outfile);
goto lose;
}
break;