]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
support: Add create_temp_file_in_dir
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 15 Oct 2020 18:14:22 +0000 (15:14 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 16 Oct 2020 17:19:23 +0000 (14:19 -0300)
It allows created a temporary file in a specified directory.

support/temp_file.c
support/temp_file.h

index 277c5e0cf17409a5f5547738ae91fca499742b1b..98bd235526bca61e7e4e0bd84899ace7a172c8af 100644 (file)
@@ -60,14 +60,12 @@ add_temp_file (const char *name)
 }
 
 int
-create_temp_file (const char *base, char **filename)
+create_temp_file_in_dir (const char *base, const char *dir, char **filename)
 {
   char *fname;
   int fd;
 
-  fname = (char *) xmalloc (strlen (test_dir) + 1 + strlen (base)
-                           + sizeof ("XXXXXX"));
-  strcpy (stpcpy (stpcpy (stpcpy (fname, test_dir), "/"), base), "XXXXXX");
+  fname = xasprintf ("%s/%sXXXXXX", dir, base);
 
   fd = mkstemp (fname);
   if (fd == -1)
@@ -86,6 +84,12 @@ create_temp_file (const char *base, char **filename)
   return fd;
 }
 
+int
+create_temp_file (const char *base, char **filename)
+{
+  return create_temp_file_in_dir (base, test_dir, filename);
+}
+
 char *
 support_create_temp_directory (const char *base)
 {
index 8b6303a6e4879eaf7dc78bdc7fcc854752bc07ae..ac6110542822672023fae9d3cd5efacd23d29611 100644 (file)
@@ -32,6 +32,13 @@ void add_temp_file (const char *name);
    *FILENAME.  */
 int create_temp_file (const char *base, char **filename);
 
+/* Create a temporary file in directory DIR.  Return the opened file
+   descriptor on success, or -1 on failure.  Write the file name to
+   *FILENAME if FILENAME is not NULL.  In this case, the caller is
+   expected to free *FILENAME.  */
+int create_temp_file_in_dir (const char *base, const char *dir,
+                            char **filename);
+
 /* Create a temporary directory and schedule it for deletion.  BASE is
    used as a prefix for the unique directory name, which the function
    returns.  The caller should free this string.  */