diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-10-15 15:14:22 -0300 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2022-08-18 00:13:15 +0200 |
commit | 2d7720f31681e13bdb7be1a44173d5547389341f (patch) | |
tree | ebf2a028e60032094e9ea9d008b43c9ba376514b | |
parent | 183709983db14000d1b9224b2aea9cb50787a59e (diff) | |
download | glibc-2d7720f31681e13bdb7be1a44173d5547389341f.tar.gz glibc-2d7720f31681e13bdb7be1a44173d5547389341f.tar.xz glibc-2d7720f31681e13bdb7be1a44173d5547389341f.zip |
support: Add create_temp_file_in_dir
It allows created a temporary file in a specified directory. (cherry picked from commit 60854f40ea2d420867ed2f0f052ee7fca661dbff)
-rw-r--r-- | support/temp_file.c | 12 | ||||
-rw-r--r-- | support/temp_file.h | 7 |
2 files changed, 15 insertions, 4 deletions
diff --git a/support/temp_file.c b/support/temp_file.c index 277c5e0cf1..98bd235526 100644 --- a/support/temp_file.c +++ b/support/temp_file.c @@ -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) { diff --git a/support/temp_file.h b/support/temp_file.h index 8b6303a6e4..ac61105428 100644 --- a/support/temp_file.h +++ b/support/temp_file.h @@ -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. */ |