]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/basic/mkdir.h
93af446ebfe85520a6e2996226cd4365b896912e
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
6 typedef enum MkdirFlags
{
7 MKDIR_FOLLOW_SYMLINK
= 1 << 0,
8 MKDIR_IGNORE_EXISTING
= 1 << 1, /* Quietly accept a preexisting directory (or file) */
9 MKDIR_WARN_MODE
= 1 << 2, /* Log at LOG_WARNING when mode doesn't match */
12 int mkdirat_errno_wrapper(int dirfd
, const char *pathname
, mode_t mode
);
14 int mkdirat_safe(int dir_fd
, const char *path
, mode_t mode
, uid_t uid
, gid_t gid
, MkdirFlags flags
);
15 static inline int mkdir_safe(const char *path
, mode_t mode
, uid_t uid
, gid_t gid
, MkdirFlags flags
) {
16 return mkdirat_safe(AT_FDCWD
, path
, mode
, uid
, gid
, flags
);
18 int mkdirat_parents(int dir_fd
, const char *path
, mode_t mode
);
19 static inline int mkdir_parents(const char *path
, mode_t mode
) {
20 return mkdirat_parents(AT_FDCWD
, path
, mode
);
22 int mkdir_parents_safe(const char *prefix
, const char *path
, mode_t mode
, uid_t uid
, gid_t gid
, MkdirFlags flags
);
23 int mkdir_p(const char *path
, mode_t mode
);
24 int mkdir_p_safe(const char *prefix
, const char *path
, mode_t mode
, uid_t uid
, gid_t gid
, MkdirFlags flags
);
25 int mkdir_p_root_full(const char *root
, const char *p
, uid_t uid
, gid_t gid
, mode_t m
, usec_t ts
, char **subvolumes
);
26 static inline int mkdir_p_root(const char *root
, const char *p
, uid_t uid
, gid_t gid
, mode_t m
) {
27 return mkdir_p_root_full(root
, p
, uid
, gid
, m
, USEC_INFINITY
, NULL
);
30 /* The following are used to implement the mkdir_xyz_label() calls, don't use otherwise. */
31 typedef int (*mkdirat_func_t
)(int dir_fd
, const char *pathname
, mode_t mode
);
32 int mkdirat_safe_internal(int dir_fd
, const char *path
, mode_t mode
, uid_t uid
, gid_t gid
, MkdirFlags flags
, mkdirat_func_t _mkdir
);
33 static inline int mkdir_safe_internal(const char *path
, mode_t mode
, uid_t uid
, gid_t gid
, MkdirFlags flags
, mkdirat_func_t _mkdir
) {
34 return mkdirat_safe_internal(AT_FDCWD
, path
, mode
, uid
, gid
, flags
, _mkdir
);
36 int mkdirat_parents_internal(int dir_fd
, const char *path
, mode_t mode
, uid_t uid
, gid_t gid
, MkdirFlags flags
, mkdirat_func_t _mkdirat
);
37 int mkdir_parents_internal(const char *prefix
, const char *path
, mode_t mode
, uid_t uid
, gid_t gid
, MkdirFlags flags
, mkdirat_func_t _mkdir
);
38 int mkdir_p_internal(const char *prefix
, const char *path
, mode_t mode
, uid_t uid
, gid_t gid
, MkdirFlags flags
, mkdirat_func_t _mkdir
);