diff options
Diffstat (limited to 'debianutils/mktemp.c')
-rw-r--r-- | debianutils/mktemp.c | 22 |
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; } |