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>
This commit is contained in:
Denys Vlasenko 2010-06-18 03:16:27 +02:00
parent 4ebdae3777
commit 9b814ca633

View File

@ -39,23 +39,20 @@ int mktemp_main(int argc UNUSED_PARAM, char **argv)
{
const char *path;
char *chp;
unsigned opt;
unsigned opts;
path = getenv("TMPDIR");
if (!path || path[0] == '\0')
path = "/tmp";
/* -q and -t are ignored */
opt_complementary = "?1"; /* 1 argument max */
opt = getopt32(argv, "dqtp:", &path);
opts = getopt32(argv, "dqtp:", &path);
chp = argv[optind] ? argv[optind] : xstrdup("tmp.XXXXXX");
chp = concat_path_file(path, chp);
if (opt & (4|8)) { /* -t and/or -p */
const char *dir = getenv("TMPDIR");
if (dir && *dir != '\0')
path = dir;
else if (!(opt & 8)) /* no -p */
path = "/tmp/";
/* else path comes from -p DIR */
chp = concat_path_file(path, chp);
}
if (opt & 1) { /* -d */
if (opts & 1) { /* -d */
if (mkdtemp(chp) == NULL)
return EXIT_FAILURE;
} else {