]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/basic/mkdir.h
Merge pull request #17549 from yuwata/tiny-fixes
[thirdparty/systemd.git] / src / basic / mkdir.h
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 #pragma once
3
4 #include <sys/types.h>
5
6 typedef enum MkdirFlags {
7 MKDIR_FOLLOW_SYMLINK = 1 << 0,
8 MKDIR_WARN_MODE = 1 << 1,
9 } MkdirFlags;
10
11 int mkdir_errno_wrapper(const char *pathname, mode_t mode);
12 int mkdirat_errno_wrapper(int dirfd, const char *pathname, mode_t mode);
13 int mkdir_safe(const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags);
14 int mkdir_parents(const char *path, mode_t mode);
15 int mkdir_parents_safe(const char *prefix, const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags);
16 int mkdir_p(const char *path, mode_t mode);
17 int mkdir_p_safe(const char *prefix, const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags);
18
19 /* mandatory access control(MAC) versions */
20 int mkdir_safe_label(const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags);
21 int mkdir_parents_label(const char *path, mode_t mod);
22 int mkdir_p_label(const char *path, mode_t mode);
23
24 /* internally used */
25 typedef int (*mkdir_func_t)(const char *pathname, mode_t mode);
26 int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags, mkdir_func_t _mkdir);
27 int mkdir_parents_internal(const char *prefix, const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags, mkdir_func_t _mkdir);
28 int mkdir_p_internal(const char *prefix, const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags, mkdir_func_t _mkdir);
29
30 int mkdir_p_root(const char *root, const char *p, uid_t uid, gid_t gid, mode_t m);