Implement -q support for mktemp(1)

This commit is contained in:
sin 2013-11-13 12:10:49 +00:00
parent b8edf3b4ee
commit 56a62c605f
2 changed files with 20 additions and 6 deletions

View File

@ -3,7 +3,7 @@
mktemp \- make temporary filename
.SH SYNOPSIS
.B mktemp
.RB [ \-d ]
.RB [ \-dq ]
.RB [ template ]
.SH DESCRIPTION
.B mktemp
@ -15,6 +15,10 @@ six `Xs' appended to it. If no template is specified a default of
.TP
.B \-d
Make a directory instead of a file
.TP
.B \-q
Fail silently if an error occurs. This is useful if a script
does not want error output to go to standard error.
.SH SEE ALSO
.IR mkdtemp (3),
.IR mkstemp (3)

View File

@ -9,10 +9,11 @@
static void
usage(void)
{
eprintf("usage: %s [-d] [template]\n", argv0);
eprintf("usage: %s [-dq] [template]\n", argv0);
}
static int dflag = 0;
static int qflag = 0;
int
main(int argc, char *argv[])
@ -26,6 +27,9 @@ main(int argc, char *argv[])
case 'd':
dflag = 1;
break;
case 'q':
qflag = 1;
break;
default:
usage();
} ARGEND;
@ -37,11 +41,17 @@ main(int argc, char *argv[])
snprintf(tmppath, sizeof(tmppath), "%s/%s", tmpdir, template);
if (dflag) {
if (!mkdtemp(tmppath))
eprintf("mkdtemp %s:", tmppath);
if (!mkdtemp(tmppath)) {
if (!qflag)
eprintf("mkdtemp %s:", tmppath);
exit(EXIT_FAILURE);
}
} else {
if ((fd = mkstemp(tmppath)) < 0)
eprintf("mkstemp %s:", tmppath);
if ((fd = mkstemp(tmppath)) < 0) {
if (!qflag)
eprintf("mkstemp %s:", tmppath);
exit(EXIT_FAILURE);
}
close(fd);
}
puts(tmppath);