summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debianutils/mktemp.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/debianutils/mktemp.c b/debianutils/mktemp.c
index 546e030..d47d5a0 100644
--- a/debianutils/mktemp.c
+++ b/debianutils/mktemp.c
@@ -18,21 +18,31 @@
int mktemp_main(int argc, char **argv)
{
- unsigned long flags = getopt32(argc, argv, "dq");
+ unsigned long flags = getopt32(argc, argv, "dqt");
+ char *chp;
if (optind + 1 != argc)
bb_show_usage();
+ chp = argv[optind];
+
+ if (flags & 4) {
+ char *dir = getenv("TMPDIR");
+ if (dir && *dir != '\0')
+ chp = concat_path_file(dir, chp);
+ else
+ chp = concat_path_file("/tmp/", chp);
+ }
+
if (flags & 1) {
- if (mkdtemp(argv[optind]) == NULL)
+ if (mkdtemp(chp) == NULL)
return EXIT_FAILURE;
- }
- else {
- if (mkstemp(argv[optind]) < 0)
+ } else {
+ if (mkstemp(chp) < 0)
return EXIT_FAILURE;
}
- puts(argv[optind]);
+ puts(chp);
return EXIT_SUCCESS;
}