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:
13
src/mktemp.c
13
src/mktemp.c
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user