commit 56a62c605f1db3076da06bc148a5bca152295209
parent b8edf3b4ee860f49f8059354704ac9a379930ef1
Author: sin <sin@2f30.org>
Date: Wed, 13 Nov 2013 12:10:49 +0000
Implement -q support for mktemp(1)
Diffstat:
2 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/mktemp.1 b/mktemp.1
@@ -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)
diff --git a/mktemp.c b/mktemp.c
@@ -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);