aboutsummaryrefslogtreecommitdiff
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 546e030b0..d47d5a0bf 100644
--- a/debianutils/mktemp.c
+++ b/debianutils/mktemp.c
@@ -18,21 +18,31 @@
18 18
19int mktemp_main(int argc, char **argv) 19int mktemp_main(int argc, char **argv)
20{ 20{
21 unsigned long flags = getopt32(argc, argv, "dq"); 21 unsigned long flags = getopt32(argc, argv, "dqt");
22 char *chp;
22 23
23 if (optind + 1 != argc) 24 if (optind + 1 != argc)
24 bb_show_usage(); 25 bb_show_usage();
25 26
27 chp = argv[optind];
28
29 if (flags & 4) {
30 char *dir = getenv("TMPDIR");
31 if (dir && *dir != '\0')
32 chp = concat_path_file(dir, chp);
33 else
34 chp = concat_path_file("/tmp/", chp);
35 }
36
26 if (flags & 1) { 37 if (flags & 1) {
27 if (mkdtemp(argv[optind]) == NULL) 38 if (mkdtemp(chp) == NULL)
28 return EXIT_FAILURE; 39 return EXIT_FAILURE;
29 } 40 } else {
30 else { 41 if (mkstemp(chp) < 0)
31 if (mkstemp(argv[optind]) < 0)
32 return EXIT_FAILURE; 42 return EXIT_FAILURE;
33 } 43 }
34 44
35 puts(argv[optind]); 45 puts(chp);
36 46
37 return EXIT_SUCCESS; 47 return EXIT_SUCCESS;
38} 48}