1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-04-20 10:51:48 +02:00

mktemp: don't leave file behind on write failure

* src/mktemp.c (main): Remove just-created file if stdout had
problems.
* bootstrap.conf (gnulib_modules): Add remove.
* tests/misc/close-stdout: Test it.
* NEWS: Document it.
This commit is contained in:
Eric Blake
2009-11-04 14:02:20 -07:00
parent cd65f11c4f
commit 41b3a8ed8b
4 changed files with 23 additions and 1 deletions

View File

@@ -23,6 +23,7 @@
#include "system.h"
#include "close-stream.h"
#include "error.h"
#include "filenamecat.h"
#include "quote.h"
@@ -277,7 +278,17 @@ main (int argc, char **argv)
}
if (status == EXIT_SUCCESS)
puts (dest_name);
{
puts (dest_name);
/* If we created a file, but then failed to output the file
name, we should clean up the mess before failing. */
if (!dry_run && close_stream (stdout))
{
int saved_errno = errno;
remove (dest_name);
error (EXIT_FAILURE, saved_errno, _("write error"));
}
}
#ifdef lint
free (dest_name);