2
0
mirror of git://sourceware.org/git/glibc.git synced 2025-03-25 13:51:04 +08:00

support: Add create_temp_file_in_dir

It allows created a temporary file in a specified directory.
This commit is contained in:
Adhemerval Zanella 2020-10-15 15:14:22 -03:00
parent 30d2e4a963
commit 60854f40ea
2 changed files with 15 additions and 4 deletions

@ -60,14 +60,12 @@ add_temp_file (const char *name)
} }
int int
create_temp_file (const char *base, char **filename) create_temp_file_in_dir (const char *base, const char *dir, char **filename)
{ {
char *fname; char *fname;
int fd; int fd;
fname = (char *) xmalloc (strlen (test_dir) + 1 + strlen (base) fname = xasprintf ("%s/%sXXXXXX", dir, base);
+ sizeof ("XXXXXX"));
strcpy (stpcpy (stpcpy (stpcpy (fname, test_dir), "/"), base), "XXXXXX");
fd = mkstemp (fname); fd = mkstemp (fname);
if (fd == -1) if (fd == -1)
@ -86,6 +84,12 @@ create_temp_file (const char *base, char **filename)
return fd; return fd;
} }
int
create_temp_file (const char *base, char **filename)
{
return create_temp_file_in_dir (base, test_dir, filename);
}
char * char *
support_create_temp_directory (const char *base) support_create_temp_directory (const char *base)
{ {

@ -32,6 +32,13 @@ void add_temp_file (const char *name);
*FILENAME. */ *FILENAME. */
int create_temp_file (const char *base, char **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 /* Create a temporary directory and schedule it for deletion. BASE is
used as a prefix for the unique directory name, which the function used as a prefix for the unique directory name, which the function
returns. The caller should free this string. */ returns. The caller should free this string. */