]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/basic/tmpfile-util.h
hexdecoct: make unbase64mem and unhexmem always use SIZE_MAX
[thirdparty/systemd.git] / src / basic / tmpfile-util.h
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 #pragma once
3
4 #include <fcntl.h>
5 #include <stdbool.h>
6 #include <stdio.h>
7
8 int fopen_temporary_at(int dir_fd, const char *path, FILE **ret_file, char **ret_path);
9 static inline int fopen_temporary(const char *path, FILE **ret_file, char **ret_path) {
10 return fopen_temporary_at(AT_FDCWD, path, ret_file, ret_path);
11 }
12
13 int fopen_temporary_child_at(int dir_fd, const char *path, FILE **ret_file, char **ret_path);
14 static inline int fopen_temporary_child(const char *path, FILE **ret_file, char **ret_path) {
15 return fopen_temporary_child_at(AT_FDCWD, path, ret_file, ret_path);
16 }
17
18 int mkostemp_safe(char *pattern);
19 int fmkostemp_safe(char *pattern, const char *mode, FILE**_f);
20
21 int tempfn_xxxxxx(const char *p, const char *extra, char **ret);
22 int tempfn_random(const char *p, const char *extra, char **ret);
23 int tempfn_random_child(const char *p, const char *extra, char **ret);
24
25 int open_tmpfile_unlinkable(const char *directory, int flags);
26 int open_tmpfile_linkable_at(int dir_fd, const char *target, int flags, char **ret_path);
27 static inline int open_tmpfile_linkable(const char *target, int flags, char **ret_path) {
28 return open_tmpfile_linkable_at(AT_FDCWD, target, flags, ret_path);
29 }
30 int fopen_tmpfile_linkable(const char *target, int flags, char **ret_path, FILE **ret_file);
31
32 typedef enum LinkTmpfileFlags {
33 LINK_TMPFILE_REPLACE = 1 << 0,
34 LINK_TMPFILE_SYNC = 1 << 1,
35 } LinkTmpfileFlags;
36
37 int link_tmpfile_at(int fd, int dir_fd, const char *path, const char *target, LinkTmpfileFlags flags);
38 static inline int link_tmpfile(int fd, const char *path, const char *target, LinkTmpfileFlags flags) {
39 return link_tmpfile_at(fd, AT_FDCWD, path, target, flags);
40 }
41 int flink_tmpfile(FILE *f, const char *path, const char *target, LinkTmpfileFlags flags);
42
43 int mkdtemp_malloc(const char *template, char **ret);
44 int mkdtemp_open(const char *template, int flags, char **ret);