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-w32-65581f3ed1032b7b1c741d6487a0ff3b742a1c8e.tar.gz busybox-w32-65581f3ed1032b7b1c741d6487a0ff3b742a1c8e.tar.bz2 busybox-w32-65581f3ed1032b7b1c741d6487a0ff3b742a1c8e.zip |
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 @@ | |||
14 | int mktemp_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 14 | int mktemp_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
15 | int mktemp_main(int argc, char **argv) | 15 | int mktemp_main(int argc, char **argv) |
16 | { | 16 | { |
17 | unsigned long flags = getopt32(argv, "dqt"); | 17 | // -d Make a directory instead of a file |
18 | // -q Fail silently if an error occurs [bbox: ignored] | ||
19 | // -t Generate a path rooted in temporary directory | ||
20 | // -p DIR Use DIR as a temporary directory (implies -t) | ||
21 | const char *path; | ||
18 | char *chp; | 22 | char *chp; |
23 | unsigned flags; | ||
19 | 24 | ||
20 | if (optind + 1 != argc) | 25 | opt_complementary = "=1"; /* exactly one arg */ |
21 | bb_show_usage(); | 26 | flags = getopt32(argv, "dqtp:", &path); |
22 | |||
23 | chp = argv[optind]; | 27 | chp = argv[optind]; |
24 | 28 | ||
25 | if (flags & 4) { | 29 | if (flags & (4|8)) { /* -t and/or -p */ |
26 | char *dir = getenv("TMPDIR"); | 30 | const char *dir = getenv("TMPDIR"); |
27 | if (dir && *dir != '\0') | 31 | if (dir && *dir != '\0') |
28 | chp = concat_path_file(dir, chp); | 32 | path = dir; |
29 | else | 33 | else if (!(flags & 8)) /* No -p */ |
30 | chp = concat_path_file("/tmp/", chp); | 34 | path = "/tmp/"; |
35 | /* else path comes from -p DIR */ | ||
36 | chp = concat_path_file(path, chp); | ||
31 | } | 37 | } |
32 | 38 | ||
33 | if (flags & 1) { | 39 | if (flags & 1) { /* -d */ |
34 | if (mkdtemp(chp) == NULL) | 40 | if (mkdtemp(chp) == NULL) |
35 | return EXIT_FAILURE; | 41 | return EXIT_FAILURE; |
36 | } else { | 42 | } else { |