mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-05-24 03:06:46 +02:00
mktemp: with --quiet, only suppress I/O errors
The reason for having a --quiet option is to suppress only some subset of possible errors. The most useful separation here is with usage/internal errors, and errors due to file creation etc. (i.e. I/O errors). * src/mktemp.c (main): Match the --help and info docs and only suppress the file/dir creation error messages. * tests/misc/mktemp.pl: Adjust accordingly.
This commit is contained in:
+10
-17
@@ -26,7 +26,6 @@
|
||||
#include "error.h"
|
||||
#include "filenamecat.h"
|
||||
#include "quote.h"
|
||||
#include "stdio--.h"
|
||||
#include "tempname.h"
|
||||
|
||||
/* The official name of this program (e.g., no 'g' prefix). */
|
||||
@@ -147,7 +146,7 @@ main (int argc, char **argv)
|
||||
{
|
||||
char const *dest_dir;
|
||||
char const *dest_dir_arg = NULL;
|
||||
bool suppress_stderr = false;
|
||||
bool suppress_file_err = false;
|
||||
int c;
|
||||
unsigned int n_args;
|
||||
char *template;
|
||||
@@ -181,7 +180,7 @@ main (int argc, char **argv)
|
||||
use_dest_dir = true;
|
||||
break;
|
||||
case 'q':
|
||||
suppress_stderr = true;
|
||||
suppress_file_err = true;
|
||||
break;
|
||||
case 't':
|
||||
use_dest_dir = true;
|
||||
@@ -205,15 +204,6 @@ main (int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
if (suppress_stderr)
|
||||
{
|
||||
/* From here on, redirect stderr to /dev/null.
|
||||
A diagnostic from getopt_long, above, would still go to stderr. */
|
||||
if (!freopen ("/dev/null", "wb", stderr))
|
||||
error (EXIT_FAILURE, errno,
|
||||
_("failed to redirect stderr to /dev/null"));
|
||||
}
|
||||
|
||||
n_args = argc - optind;
|
||||
if (2 <= n_args)
|
||||
{
|
||||
@@ -317,8 +307,9 @@ main (int argc, char **argv)
|
||||
int err = mkdtemp_len (dest_name, suffix_len, x_count, dry_run);
|
||||
if (err != 0)
|
||||
{
|
||||
error (0, errno, _("failed to create directory via template %s"),
|
||||
quote (template));
|
||||
if (!suppress_file_err)
|
||||
error (0, errno, _("failed to create directory via template %s"),
|
||||
quote (template));
|
||||
status = EXIT_FAILURE;
|
||||
}
|
||||
}
|
||||
@@ -327,8 +318,9 @@ main (int argc, char **argv)
|
||||
int fd = mkstemp_len (dest_name, suffix_len, x_count, dry_run);
|
||||
if (fd < 0 || (!dry_run && close (fd) != 0))
|
||||
{
|
||||
error (0, errno, _("failed to create file via template %s"),
|
||||
quote (template));
|
||||
if (!suppress_file_err)
|
||||
error (0, errno, _("failed to create file via template %s"),
|
||||
quote (template));
|
||||
status = EXIT_FAILURE;
|
||||
}
|
||||
}
|
||||
@@ -342,7 +334,8 @@ main (int argc, char **argv)
|
||||
{
|
||||
int saved_errno = errno;
|
||||
remove (dest_name);
|
||||
error (EXIT_FAILURE, saved_errno, _("write error"));
|
||||
if (!suppress_file_err)
|
||||
error (EXIT_FAILURE, saved_errno, _("write error"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -55,14 +55,12 @@ my @Tests =
|
||||
(
|
||||
# test-name, [option, option, ...] {OUT=>"expected-output"}
|
||||
#
|
||||
['too-many', 'a b',
|
||||
['too-many', '-q a b',
|
||||
{ERR=>"$prog: too many templates\n"
|
||||
. "Try '$prog --help' for more information.\n"}, {EXIT => 1} ],
|
||||
['too-many-q', '-q a b', {EXIT => 1} ],
|
||||
|
||||
['too-few-x', 'foo.XX', {EXIT => 1},
|
||||
['too-few-x', '-q foo.XX', {EXIT => 1},
|
||||
{ERR=>"$prog: too few X's in template 'foo.XX'\n"}],
|
||||
['too-few-xq', '-q foo.XX', {EXIT => 1} ],
|
||||
|
||||
['1f', 'bar.XXXX', {OUT => "bar.ZZZZ\n"},
|
||||
{OUT_SUBST => 's,\.....$,.ZZZZ,'},
|
||||
@@ -148,11 +146,9 @@ my @Tests =
|
||||
|
||||
['suffix6f', 'aXXXX/b', {EXIT=>1},
|
||||
{ERR=>"$prog: invalid suffix '/b', contains directory separator\n"}],
|
||||
['suffix6f-q', '-q aXXXX/b', {EXIT=>1}],
|
||||
|
||||
['suffix7f', '--suffix= aXXXXb', {EXIT=>1},
|
||||
{ERR=>"$prog: with --suffix, template 'aXXXXb' must end in X\n"}],
|
||||
['suffix7f-q', '-q --suffix= aXXXXb', {EXIT=>1}],
|
||||
['suffix7d', '-d --suffix=aXXXXb ""', {EXIT=>1},
|
||||
{ERR=>"$prog: with --suffix, template '' must end in X\n"}],
|
||||
|
||||
|
||||
Reference in New Issue
Block a user