chiark / gitweb /
util: allow mkdtemp_malloc() to be called with NULL pattern
authorLennart Poettering <lennart@poettering.net>
Tue, 5 Jun 2018 14:51:31 +0000 (16:51 +0200)
committerSven Eden <yamakuzure@gmx.net>
Fri, 24 Aug 2018 14:47:08 +0000 (16:47 +0200)
In that case simply place the directory in /tmp.

src/basic/fileio.c

index 3ed796edf96805cde03598f24fa49a3ceec28a49..2d742c911cfeb5a1791831ae8b241788ed0f9bfe 100644 (file)
@@ -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