From 3a9241add947cb6d24b5de7a8927517426a78795 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Sat, 25 Aug 2012 14:25:22 -0500 Subject: Move commands into "posix", "lsb", and "other" menus/directories. --- toys/lsb/mktemp.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 toys/lsb/mktemp.c (limited to 'toys/lsb/mktemp.c') diff --git a/toys/lsb/mktemp.c b/toys/lsb/mktemp.c new file mode 100644 index 00000000..e82256de --- /dev/null +++ b/toys/lsb/mktemp.c @@ -0,0 +1,54 @@ +/* vi: set sw=4 ts=4: + * + * mktemp.c - Create a temporary file or directory. + * + * Copyright 2012 Elie De Brauwer + * + * Not in SUSv4. + +USE_MKTEMP(NEWTOY(mktemp, ">1(directory)d(tmpdir)p:", TOYFLAG_BIN)) + +config MKTEMP + bool "mktemp" + default y + help + usage: mktemp [OPTION] [TEMPLATE] + + Safely create a temporary file or directory and print its name. + TEMPLATE should end in 6 consecutive X's, the default + template is tmp.XXXXXX and the default directory is /tmp/. + + -d, --directory Create a directory, instead of a file + -p DIR, --tmpdir=DIR Use DIR as a base path + +*/ + +#include "toys.h" + +DEFINE_GLOBALS( + char * tmpdir; +) +#define TT this.mktemp + +void mktemp_main(void) +{ + int d_flag = toys.optflags & 2; + char *tmp, *path; + + tmp = *toys.optargs; + if (!tmp) tmp = "tmp.XXXXXX"; + if (!TT.tmpdir) TT.tmpdir = "/tmp/"; + + tmp = xmsprintf("%s/%s", TT.tmpdir, tmp); + + if (d_flag ? mkdtemp(tmp) == NULL : mkstemp(tmp) == -1) + perror_exit("Failed to create temporary %s", + d_flag ? "directory" : "file"); + + xputs(path = xrealpath(tmp)); + + if (CFG_TOYBOX_FREE) { + free(path); + free(tmp); + } +} -- cgit v1.2.3