chiark / gitweb /
c0e08fcfb897070a85e2af84ccdf4461ee0cce0c
[elogind.git] / src / basic / mkdir.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
2 #pragma once
3
4 /***
5   This file is part of systemd.
6
7   Copyright 2010 Lennart Poettering
8   Copyright 2013 Kay Sievers
9 ***/
10
11 #include <sys/types.h>
12
13 typedef enum MkdirFlags {
14         MKDIR_FOLLOW_SYMLINK = 1 << 0,
15         MKDIR_WARN_MODE      = 1 << 1,
16 } MkdirFlags;
17
18 int mkdir_errno_wrapper(const char *pathname, mode_t mode);
19 int mkdir_safe(const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags);
20 int mkdir_parents(const char *path, mode_t mode);
21 int mkdir_p(const char *path, mode_t mode);
22
23 /* mandatory access control(MAC) versions */
24 int mkdir_safe_label(const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags);
25 #if 0 /// UNNEEDED by elogind
26 int mkdir_parents_label(const char *path, mode_t mode);
27 #endif // 0
28 int mkdir_p_label(const char *path, mode_t mode);
29
30 /* internally used */
31 typedef int (*mkdir_func_t)(const char *pathname, mode_t mode);
32 int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags, mkdir_func_t _mkdir);
33 int mkdir_parents_internal(const char *prefix, const char *path, mode_t mode, mkdir_func_t _mkdir);
34 int mkdir_p_internal(const char *prefix, const char *path, mode_t mode, mkdir_func_t _mkdir);