# HG changeset patch # User Rob Landley # Date 1423359923 21600 # Node ID abe691083cfe9192e36b8804c23da7fc2b5a3783 # Parent 4bcfe4cf3e505b3dba49233e76f4b41229c98a05 Shameless meddling. diff -r 4bcfe4cf3e50 -r abe691083cfe toys/lsb/mktemp.c --- a/toys/lsb/mktemp.c Sat Feb 07 19:27:59 2015 -0600 +++ b/toys/lsb/mktemp.c Sat Feb 07 19:45:23 2015 -0600 @@ -12,44 +12,39 @@ help usage: mktemp [-dq] [-p DIR] [TEMPLATE] - Safely create a new file and print its name. The default TEMPLATE is - tmp.XXXXXX. The default DIR is $TMPDIR, or /tmp if $TMPDIR is not set. + Safely create a new file "DIR/TEMPLATE" and print its name. - -d, --directory Create directory instead of file - -p DIR, --tmpdir=DIR Put new file in DIR - -q Quiet + -d Create directory instead of file (--directory) + -p Put new file in DIR (--tmpdir) + -q Quiet, no error messages + + Each X in TEMPLATE is replaced with a random printable character. The + default TEMPLATE is tmp.XXXXXX, and the default DIR is $TMPDIR if set, + else "/tmp". */ #define FOR_mktemp #include "toys.h" GLOBALS( - char * tmpdir; + char *tmpdir; ) void mktemp_main(void) { int d_flag = toys.optflags & FLAG_d; char *template = *toys.optargs; - int success; - if (!template) { - template = "tmp.XXXXXX"; - } + if (!template) template = "tmp.XXXXXX"; if (!TT.tmpdir) TT.tmpdir = getenv("TMPDIR"); if (!TT.tmpdir) TT.tmpdir = "/tmp"; snprintf(toybuf, sizeof(toybuf), "%s/%s", TT.tmpdir, template); - if (d_flag ? mkdtemp(toybuf) == NULL : mkstemp(toybuf) == -1) { - if (toys.optflags & FLAG_q) { - toys.exitval = 1; - } else { - perror_exit("Failed to create temporary %s with template %s/%s", - d_flag ? "directory" : "file", TT.tmpdir, template); - } - } - - xputs(toybuf); + if (d_flag ? !mkdtemp(toybuf) : mkstemp(toybuf) == -1) { + if (toys.optflags & FLAG_q) toys.exitval = 1; + else perror_exit("Failed to create %s %s/%s", + d_flag ? "directory" : "file", TT.tmpdir, template); + } else xputs(toybuf); }