diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-06-18 03:16:27 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-06-18 03:16:27 +0200 |
commit | 9b814ca6335806a6eb47e22805620ec81d5d849d (patch) | |
tree | 37f70b9da97e9714227b536811be47f4f7fd3959 | |
parent | 4ebdae3777b8c9175d5d07090989f7e498befc42 (diff) | |
download | busybox-w32-9b814ca6335806a6eb47e22805620ec81d5d849d.tar.gz busybox-w32-9b814ca6335806a6eb47e22805620ec81d5d849d.tar.bz2 busybox-w32-9b814ca6335806a6eb47e22805620ec81d5d849d.zip |
mktemp: be more compatible: bare "mktemp" creates tempfile in /tmp, not cwd
function old new delta
mktemp_main 171 152 -19
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | debianutils/mktemp.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/debianutils/mktemp.c b/debianutils/mktemp.c index 0dcb1e826..c40211476 100644 --- a/debianutils/mktemp.c +++ b/debianutils/mktemp.c | |||
@@ -39,23 +39,20 @@ int mktemp_main(int argc UNUSED_PARAM, char **argv) | |||
39 | { | 39 | { |
40 | const char *path; | 40 | const char *path; |
41 | char *chp; | 41 | char *chp; |
42 | unsigned opt; | 42 | unsigned opts; |
43 | 43 | ||
44 | path = getenv("TMPDIR"); | ||
45 | if (!path || path[0] == '\0') | ||
46 | path = "/tmp"; | ||
47 | |||
48 | /* -q and -t are ignored */ | ||
44 | opt_complementary = "?1"; /* 1 argument max */ | 49 | opt_complementary = "?1"; /* 1 argument max */ |
45 | opt = getopt32(argv, "dqtp:", &path); | 50 | opts = getopt32(argv, "dqtp:", &path); |
46 | chp = argv[optind] ? argv[optind] : xstrdup("tmp.XXXXXX"); | ||
47 | 51 | ||
48 | if (opt & (4|8)) { /* -t and/or -p */ | 52 | chp = argv[optind] ? argv[optind] : xstrdup("tmp.XXXXXX"); |
49 | const char *dir = getenv("TMPDIR"); | 53 | chp = concat_path_file(path, chp); |
50 | if (dir && *dir != '\0') | ||
51 | path = dir; | ||
52 | else if (!(opt & 8)) /* no -p */ | ||
53 | path = "/tmp/"; | ||
54 | /* else path comes from -p DIR */ | ||
55 | chp = concat_path_file(path, chp); | ||
56 | } | ||
57 | 54 | ||
58 | if (opt & 1) { /* -d */ | 55 | if (opts & 1) { /* -d */ |
59 | if (mkdtemp(chp) == NULL) | 56 | if (mkdtemp(chp) == NULL) |
60 | return EXIT_FAILURE; | 57 | return EXIT_FAILURE; |
61 | } else { | 58 | } else { |