From 55944e5e40b1be2afc4855d8d2baf4b73d1876b5 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 22:49:52 +0200 Subject: Adding upstream version 255.4. Signed-off-by: Daniel Baumann --- src/basic/tmpfile-util.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/basic/tmpfile-util.h (limited to 'src/basic/tmpfile-util.h') diff --git a/src/basic/tmpfile-util.h b/src/basic/tmpfile-util.h new file mode 100644 index 0000000..8c917c0 --- /dev/null +++ b/src/basic/tmpfile-util.h @@ -0,0 +1,44 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +#pragma once + +#include +#include +#include + +int fopen_temporary_at(int dir_fd, const char *path, FILE **ret_file, char **ret_path); +static inline int fopen_temporary(const char *path, FILE **ret_file, char **ret_path) { + return fopen_temporary_at(AT_FDCWD, path, ret_file, ret_path); +} + +int fopen_temporary_child_at(int dir_fd, const char *path, FILE **ret_file, char **ret_path); +static inline int fopen_temporary_child(const char *path, FILE **ret_file, char **ret_path) { + return fopen_temporary_child_at(AT_FDCWD, path, ret_file, ret_path); +} + +int mkostemp_safe(char *pattern); +int fmkostemp_safe(char *pattern, const char *mode, FILE**_f); + +int tempfn_xxxxxx(const char *p, const char *extra, char **ret); +int tempfn_random(const char *p, const char *extra, char **ret); +int tempfn_random_child(const char *p, const char *extra, char **ret); + +int open_tmpfile_unlinkable(const char *directory, int flags); +int open_tmpfile_linkable_at(int dir_fd, const char *target, int flags, char **ret_path); +static inline int open_tmpfile_linkable(const char *target, int flags, char **ret_path) { + return open_tmpfile_linkable_at(AT_FDCWD, target, flags, ret_path); +} +int fopen_tmpfile_linkable(const char *target, int flags, char **ret_path, FILE **ret_file); + +typedef enum LinkTmpfileFlags { + LINK_TMPFILE_REPLACE = 1 << 0, + LINK_TMPFILE_SYNC = 1 << 1, +} LinkTmpfileFlags; + +int link_tmpfile_at(int fd, int dir_fd, const char *path, const char *target, LinkTmpfileFlags flags); +static inline int link_tmpfile(int fd, const char *path, const char *target, LinkTmpfileFlags flags) { + return link_tmpfile_at(fd, AT_FDCWD, path, target, flags); +} +int flink_tmpfile(FILE *f, const char *path, const char *target, LinkTmpfileFlags flags); + +int mkdtemp_malloc(const char *template, char **ret); +int mkdtemp_open(const char *template, int flags, char **ret); -- cgit v1.2.3