hc
2023-05-26 a23f51ed7a39e452c1037343a84d7db1ca2c5bd7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
From ceb378209f953ea745ed93a8645567196380ce3c Mon Sep 17 00:00:00 2001
From: Andrej Valek <andrej.valek@siemens.com>
Date: Thu, 24 Jun 2021 19:13:22 +0200
Subject: [PATCH] mktemp: add tmpdir option
 
Make mktemp more compatible with coreutils.
- add "--tmpdir" option
- add long variants for "d,q,u" options
 
Upstream-Status: Submitted [http://lists.busybox.net/pipermail/busybox/2021-June/088932.html]
 
Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
 coreutils/mktemp.c | 26 ++++++++++++++++++--------
 1 file changed, 18 insertions(+), 8 deletions(-)
 
diff --git a/coreutils/mktemp.c b/coreutils/mktemp.c
index 5393320a5..05c6d98c6 100644
--- a/coreutils/mktemp.c
+++ b/coreutils/mktemp.c
@@ -39,16 +39,17 @@
 //kbuild:lib-$(CONFIG_MKTEMP) += mktemp.o
 
 //usage:#define mktemp_trivial_usage
-//usage:       "[-dt] [-p DIR] [TEMPLATE]"
+//usage:       "[-dt] [-p DIR, --tmpdir[=DIR]] [TEMPLATE]"
 //usage:#define mktemp_full_usage "\n\n"
 //usage:       "Create a temporary file with name based on TEMPLATE and print its name.\n"
 //usage:       "TEMPLATE must end with XXXXXX (e.g. [/dir/]nameXXXXXX).\n"
 //usage:       "Without TEMPLATE, -t tmp.XXXXXX is assumed.\n"
-//usage:     "\n    -d    Make directory, not file"
-//usage:     "\n    -q    Fail silently on errors"
-//usage:     "\n    -t    Prepend base directory name to TEMPLATE"
-//usage:     "\n    -p DIR    Use DIR as a base directory (implies -t)"
-//usage:     "\n    -u    Do not create anything; print a name"
+//usage:     "\n    -d            Make directory, not file"
+//usage:     "\n    -q            Fail silently on errors"
+//usage:     "\n    -t            Prepend base directory name to TEMPLATE"
+//usage:     "\n    -p DIR, --tmpdir[=DIR]    Use DIR as a base directory (implies -t)"
+//usage:     "\n                For --tmpdir is a optional one."
+//usage:     "\n    -u            Do not create anything; print a name"
 //usage:     "\n"
 //usage:     "\nBase directory is: -p DIR, else $TMPDIR, else /tmp"
 //usage:
@@ -72,13 +73,22 @@ int mktemp_main(int argc UNUSED_PARAM, char **argv)
         OPT_t = 1 << 2,
         OPT_p = 1 << 3,
         OPT_u = 1 << 4,
+        OPT_td = 1 << 5,
     };
 
     path = getenv("TMPDIR");
     if (!path || path[0] == '\0')
         path = "/tmp";
 
-    opts = getopt32(argv, "^" "dqtp:u" "\0" "?1"/*1 arg max*/, &path);
+    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
+    );
 
     chp = argv[optind];
     if (!chp) {
@@ -95,7 +105,7 @@ int mktemp_main(int argc UNUSED_PARAM, char **argv)
         goto error;
     }
 #endif
-    if (opts & (OPT_t|OPT_p))
+    if (opts & (OPT_t|OPT_p|OPT_td))
         chp = concat_path_file(path, chp);
 
     if (opts & OPT_u) {
-- 
2.11.0