sbase

suckless unix tools
git clone git://git.2f30.org/sbase
Log | Files | Refs | README | LICENSE

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:
Mmktemp.1 | 6+++++-
Mmktemp.c | 20+++++++++++++++-----
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);