From 0d77192b13d5fa28456d0d1bea6c63458fd66cb3 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 5 Jun 2018 16:51:31 +0200 Subject: util: allow mkdtemp_malloc() to be called with NULL pattern In that case simply place the directory in /tmp. --- src/basic/fileio.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'src/basic/fileio.c') 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 -- cgit v1.2.3