diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-02-09 06:26:53 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-02-09 06:26:53 +0000 |
commit | 65581f3ed1032b7b1c741d6487a0ff3b742a1c8e (patch) | |
tree | df213c6f4a9fffdab727b3b6cf576c33f1bf0321 /debianutils | |
parent | 1e2a7e4ed1ddcd457b6e7e3eebd6a90b7621079e (diff) | |
download | busybox-65581f3ed1032b7b1c741d6487a0ff3b742a1c8e.tar.gz |
mktemp: support -p DIR (Timo Teras <timo.teras at iki.fi>)
packed_usage 23595 23660 +65
mktemp_main 139 157 +18
Diffstat (limited to 'debianutils')
-rw-r--r-- | debianutils/mktemp.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/debianutils/mktemp.c b/debianutils/mktemp.c index 5772ad9ee..7ed624526 100644 --- a/debianutils/mktemp.c +++ b/debianutils/mktemp.c @@ -14,23 +14,29 @@ int mktemp_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int mktemp_main(int argc, char **argv) { - unsigned long flags = getopt32(argv, "dqt"); + // -d Make a directory instead of a file + // -q Fail silently if an error occurs [bbox: ignored] + // -t Generate a path rooted in temporary directory + // -p DIR Use DIR as a temporary directory (implies -t) + const char *path; char *chp; + unsigned flags; - if (optind + 1 != argc) - bb_show_usage(); - + opt_complementary = "=1"; /* exactly one arg */ + flags = getopt32(argv, "dqtp:", &path); chp = argv[optind]; - if (flags & 4) { - char *dir = getenv("TMPDIR"); + if (flags & (4|8)) { /* -t and/or -p */ + const char *dir = getenv("TMPDIR"); if (dir && *dir != '\0') - chp = concat_path_file(dir, chp); - else - chp = concat_path_file("/tmp/", chp); + path = dir; + else if (!(flags & 8)) /* No -p */ + path = "/tmp/"; + /* else path comes from -p DIR */ + chp = concat_path_file(path, chp); } - if (flags & 1) { + if (flags & 1) { /* -d */ if (mkdtemp(chp) == NULL) return EXIT_FAILURE; } else { |