public inbox for libc-stable@sourceware.org
 help / color / mirror / Atom feed
* [COMMITTED 2.31 1/7] support: Add create_temp_file_in_dir
@ 2022-08-18 10:02 Aurelien Jarno
  2022-08-18 10:02 ` [COMMITTED 2.31 2/7] Add xchdir to libsupport Aurelien Jarno
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Aurelien Jarno @ 2022-08-18 10:02 UTC (permalink / raw)
  To: libc-stable

From: Adhemerval Zanella <adhemerval.zanella@linaro.org>

It allows created a temporary file in a specified directory.

(cherry picked from commit 60854f40ea2d420867ed2f0f052ee7fca661dbff)
---
 support/temp_file.c | 12 ++++++++----
 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.  */
-- 
2.35.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-08-18 10:02 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-18 10:02 [COMMITTED 2.31 1/7] support: Add create_temp_file_in_dir Aurelien Jarno
2022-08-18 10:02 ` [COMMITTED 2.31 2/7] Add xchdir to libsupport Aurelien Jarno
2022-08-18 10:02 ` [COMMITTED 2.31 3/7] support: Add xclone Aurelien Jarno
2022-08-18 10:02 ` [COMMITTED 2.31 4/7] support: Fix xclone build failures on ia64 and hppa Aurelien Jarno
2022-08-18 10:02 ` [COMMITTED 2.31 5/7] support: Add helpers to create paths longer than PATH_MAX Aurelien Jarno
2022-08-18 10:02 ` [COMMITTED 2.31 6/7] getcwd: Set errno to ERANGE for size == 1 (CVE-2021-3999) Aurelien Jarno
2022-08-18 10:02 ` [COMMITTED 2.31 7/7] Linux: Detect user namespace support in io/tst-getcwd-smallbuff Aurelien Jarno

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).