mktemp: add --tmpdir option

Make mktemp more compatible with coreutils.
- add "--tmpdir" option
- add long variants for "d,q,u" options

Note: Upstream ca-certificate update script started using this option.

function                                             old     new   delta
.rodata                                           104179  104219     +40
mktemp_main                                          186     194      +8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 48/0)               Total: 48 bytes

Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Andrej Valek 2021-06-25 07:45:35 +02:00 committed by Denys Vlasenko
parent b198e9aa93
commit ecac9853f2

View File

@ -72,13 +72,27 @@ int mktemp_main(int argc UNUSED_PARAM, char **argv)
OPT_t = 1 << 2, OPT_t = 1 << 2,
OPT_p = 1 << 3, OPT_p = 1 << 3,
OPT_u = 1 << 4, OPT_u = 1 << 4,
OPT_tmpdir = (1 << 5) * ENABLE_LONG_OPTS,
}; };
path = getenv("TMPDIR"); path = getenv("TMPDIR");
if (!path || path[0] == '\0') if (!path || path[0] == '\0')
path = "/tmp"; path = "/tmp";
#if ENABLE_LONG_OPTS
opts = getopt32long(argv, "^"
"dqtp:u"
"\0"
"?1" /* 1 arg max */,
"directory\0" No_argument "d"
"quiet\0" No_argument "q"
"dry-run\0" No_argument "u"
"tmpdir\0" Optional_argument "\xff"
, &path, &path
);
#else
opts = getopt32(argv, "^" "dqtp:u" "\0" "?1"/*1 arg max*/, &path); opts = getopt32(argv, "^" "dqtp:u" "\0" "?1"/*1 arg max*/, &path);
#endif
chp = argv[optind]; chp = argv[optind];
if (!chp) { if (!chp) {
@ -95,7 +109,7 @@ int mktemp_main(int argc UNUSED_PARAM, char **argv)
goto error; goto error;
} }
#endif #endif
if (opts & (OPT_t|OPT_p)) if (opts & (OPT_t|OPT_p|OPT_tmpdir))
chp = concat_path_file(path, chp); chp = concat_path_file(path, chp);
if (opts & OPT_u) { if (opts & OPT_u) {