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 | |
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
-rw-r--r-- | debianutils/mktemp.c | 26 | ||||
-rw-r--r-- | include/usage.h | 10 |
2 files changed, 24 insertions, 12 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 { |
diff --git a/include/usage.h b/include/usage.h index 77a86074b..a65e24941 100644 --- a/include/usage.h +++ b/include/usage.h | |||
@@ -2339,13 +2339,19 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
2339 | " block-count Number of block to use (default is entire partition)" | 2339 | " block-count Number of block to use (default is entire partition)" |
2340 | 2340 | ||
2341 | #define mktemp_trivial_usage \ | 2341 | #define mktemp_trivial_usage \ |
2342 | "[-dq] TEMPLATE" | 2342 | "[-dqt] [-p dir] TEMPLATE" |
2343 | #define mktemp_full_usage \ | 2343 | #define mktemp_full_usage \ |
2344 | "Create a temporary file with its name based on TEMPLATE.\n" \ | 2344 | "Create a temporary file with its name based on TEMPLATE.\n" \ |
2345 | "TEMPLATE is any name with six 'Xs' (i.e., /tmp/temp.XXXXXX)." \ | 2345 | "TEMPLATE is any name with six 'Xs' (i.e., /tmp/temp.XXXXXX)." \ |
2346 | "\n\nOptions:\n" \ | 2346 | "\n\nOptions:\n" \ |
2347 | " -d Make a directory instead of a file\n" \ | 2347 | " -d Make a directory instead of a file\n" \ |
2348 | " -q Fail silently if an error occurs" | 2348 | /* " -q Fail silently if an error occurs\n" - we ignore it */ \ |
2349 | " -t Generate a path rooted in temporary directory\n" \ | ||
2350 | " -p DIR Use DIR as a temporary directory (implies -t)\n" \ | ||
2351 | "\n" \ | ||
2352 | "For -t or -p, directory is chosen as follows:\n" \ | ||
2353 | "$TMPDIR if set, else -p DIR, else /tmp" | ||
2354 | |||
2349 | #define mktemp_example_usage \ | 2355 | #define mktemp_example_usage \ |
2350 | "$ mktemp /tmp/temp.XXXXXX\n" \ | 2356 | "$ mktemp /tmp/temp.XXXXXX\n" \ |
2351 | "/tmp/temp.mWiLjM\n" \ | 2357 | "/tmp/temp.mWiLjM\n" \ |