]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/basic/mkdir.h
license: LGPL-2.1+ -> LGPL-2.1-or-later
[thirdparty/systemd.git] / src / basic / mkdir.h
CommitLineData
db9ecf05 1/* SPDX-License-Identifier: LGPL-2.1-or-later */
f4ef809c 2#pragma once
49e942b2 3
4ad49000
LP
4#include <sys/types.h>
5
d50b5839
ZJS
6typedef enum MkdirFlags {
7 MKDIR_FOLLOW_SYMLINK = 1 << 0,
37c1d5e9 8 MKDIR_WARN_MODE = 1 << 1,
d50b5839
ZJS
9} MkdirFlags;
10
dae8b82e 11int mkdir_errno_wrapper(const char *pathname, mode_t mode);
1e912631 12int mkdirat_errno_wrapper(int dirfd, const char *pathname, mode_t mode);
d50b5839 13int mkdir_safe(const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags);
c66e7f04 14int mkdir_parents(const char *path, mode_t mode);
17b99e37 15int mkdir_parents_safe(const char *prefix, const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags);
c66e7f04 16int mkdir_p(const char *path, mode_t mode);
17b99e37 17int mkdir_p_safe(const char *prefix, const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags);
4ad49000 18
66b6d9d5 19/* mandatory access control(MAC) versions */
d50b5839 20int mkdir_safe_label(const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags);
17b99e37 21int mkdir_parents_label(const char *path, mode_t mod);
39bdfa31 22int mkdir_p_label(const char *path, mode_t mode);
39bdfa31
KS
23
24/* internally used */
25typedef int (*mkdir_func_t)(const char *pathname, mode_t mode);
d50b5839 26int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags, mkdir_func_t _mkdir);
17b99e37
LB
27int mkdir_parents_internal(const char *prefix, const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags, mkdir_func_t _mkdir);
28int mkdir_p_internal(const char *prefix, const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags, mkdir_func_t _mkdir);
0de3c4f4
LP
29
30int mkdir_p_root(const char *root, const char *p, uid_t uid, gid_t gid, mode_t m);