From: Aurelien Jarno <aurelien@aurel32.net>
To: libc-stable@sourceware.org
Subject: [COMMITTED 2.31 1/7] support: Add create_temp_file_in_dir
Date: Thu, 18 Aug 2022 12:02:19 +0200 [thread overview]
Message-ID: <20220818100225.2002653-1-aurelien@aurel32.net> (raw)
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
next reply other threads:[~2022-08-18 10:02 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-18 10:02 Aurelien Jarno [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220818100225.2002653-1-aurelien@aurel32.net \
--to=aurelien@aurel32.net \
--cc=libc-stable@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).