summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2018-06-05 16:51:31 +0200
committerSven Eden <yamakuzure@gmx.net>2018-08-24 16:47:08 +0200
commit0d77192b13d5fa28456d0d1bea6c63458fd66cb3 (patch)
tree60427f54214e14defb534ea80c4af9aef46ea0fa
parentfc7c1e170db761d2675a3b1c72a16856b8dfb868 (diff)
util: allow mkdtemp_malloc() to be called with NULL pattern
In that case simply place the directory in /tmp.
-rw-r--r--src/basic/fileio.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/basic/fileio.c b/src/basic/fileio.c
index 3ed796edf..2d742c911 100644
--- a/src/basic/fileio.c
+++ b/src/basic/fileio.c
@@ -1571,21 +1571,29 @@ int read_nul_string(FILE *f, char **ret) {
}
int mkdtemp_malloc(const char *template, char **ret) {
- char *p;
+ _cleanup_free_ char *p = NULL;
+ int r;
- assert(template);
assert(ret);
- p = strdup(template);
+ if (template)
+ p = strdup(template);
+ else {
+ const char *tmp;
+
+ r = tmp_dir(&tmp);
+ if (r < 0)
+ return r;
+
+ p = strjoin(tmp, "/XXXXXX");
+ }
if (!p)
return -ENOMEM;
- if (!mkdtemp(p)) {
- free(p);
+ if (!mkdtemp(p))
return -errno;
- }
- *ret = p;
+ *ret = TAKE_PTR(p);
return 0;
}
#endif // 0