summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2019-10-11 11:45:05 +0000
committerColin Walters <walters@verbum.org>2019-10-11 11:45:05 +0000
commit2eeb8a7512be6755307cb21ccde4384016c6771f (patch)
tree97918f104b1c1aab75baa937104fcae1fee9cd57
parent15c06468804014fc49f6f340132930703f919b19 (diff)
parente8233c6356ea5c27cf376c157344a1ff47843a57 (diff)
downloadlibglnx-2eeb8a7512be6755307cb21ccde4384016c6771f.tar.gz
Merge branch 'anonymous-tmpfile-dir' into 'master'
Add glnx_open_anonymous_tmpfile_full() allowing you to specify the directory See merge request GNOME/libglnx!10
-rw-r--r--glnx-fdio.c29
-rw-r--r--glnx-fdio.h7
2 files changed, 30 insertions, 6 deletions
diff --git a/glnx-fdio.c b/glnx-fdio.c
index 7b734ff..1dc5ffd 100644
--- a/glnx-fdio.c
+++ b/glnx-fdio.c
@@ -277,17 +277,19 @@ glnx_open_tmpfile_linkable_at (int dfd,
return open_tmpfile_core (dfd, subpath, flags, out_tmpf, error);
}
+
/* A variant of `glnx_open_tmpfile_linkable_at()` which doesn't support linking.
- * Useful for true temporary storage. The fd will be allocated in /var/tmp to
- * ensure maximum storage space.
+ * Useful for true temporary storage. The fd will be allocated in the specified
+ * directory.
*/
gboolean
-glnx_open_anonymous_tmpfile (int flags,
- GLnxTmpfile *out_tmpf,
- GError **error)
+glnx_open_anonymous_tmpfile_full (int flags,
+ const char *dir,
+ GLnxTmpfile *out_tmpf,
+ GError **error)
{
/* Add in O_EXCL */
- if (!open_tmpfile_core (AT_FDCWD, "/var/tmp", flags | O_EXCL, out_tmpf, error))
+ if (!open_tmpfile_core (AT_FDCWD, dir, flags | O_EXCL, out_tmpf, error))
return FALSE;
if (out_tmpf->path)
{
@@ -299,6 +301,21 @@ glnx_open_anonymous_tmpfile (int flags,
return TRUE;
}
+/* A variant of `glnx_open_tmpfile_linkable_at()` which doesn't support linking.
+ * Useful for true temporary storage. The fd will be allocated in /var/tmp to
+ * ensure maximum storage space.
+ *
+ * If you need the file on a specific filesystem use glnx_open_anonymous_tmpfile_full()
+ * which lets you pass a directory.
+ */
+gboolean
+glnx_open_anonymous_tmpfile (int flags,
+ GLnxTmpfile *out_tmpf,
+ GError **error)
+{
+ return glnx_open_anonymous_tmpfile_full (flags, "/var/tmp", out_tmpf, error);
+}
+
/* Use this after calling glnx_open_tmpfile_linkable_at() to give
* the file its final name (link into place).
*/
diff --git a/glnx-fdio.h b/glnx-fdio.h
index c0a7cc1..d97ea36 100644
--- a/glnx-fdio.h
+++ b/glnx-fdio.h
@@ -84,6 +84,13 @@ glnx_open_anonymous_tmpfile (int flags,
GError **error);
gboolean
+glnx_open_anonymous_tmpfile_full (int flags,
+ const char *dir,
+ GLnxTmpfile *out_tmpf,
+ GError **error);
+
+
+gboolean
glnx_open_tmpfile_linkable_at (int dfd,
const char *subpath,
int flags,