Lines Matching refs:path
28 #include "path-util.h"
32 int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, mkdir_func_t _mkdir) {
35 if (_mkdir(path, mode) >= 0)
36 if (chmod_and_chown(path, mode, uid, gid) < 0)
39 if (lstat(path, &st) < 0)
53 int mkdir_safe(const char *path, mode_t mode, uid_t uid, gid_t gid) {
54 return mkdir_safe_internal(path, mode, uid, gid, mkdir);
57 int mkdir_parents_internal(const char *prefix, const char *path, mode_t mode, mkdir_func_t _mkdir) {
61 assert(path);
63 if (prefix && !path_startswith(path, prefix))
67 e = strrchr(path, '/');
71 if (e == path)
74 p = strndupa(path, e - path);
81 /* create every parent directory in the path, except the last component */
82 p = path + strspn(path, "/");
84 char t[strlen(path) + 1];
94 memcpy(t, path, e - path);
95 t[e-path] = 0;
106 int mkdir_parents(const char *path, mode_t mode) {
107 return mkdir_parents_internal(NULL, path, mode, mkdir);
110 int mkdir_p_internal(const char *prefix, const char *path, mode_t mode, mkdir_func_t _mkdir) {
115 r = mkdir_parents_internal(prefix, path, mode, _mkdir);
119 r = _mkdir(path, mode);
120 if (r < 0 && (errno != EEXIST || is_dir(path, true) <= 0))
126 int mkdir_p(const char *path, mode_t mode) {
127 return mkdir_p_internal(NULL, path, mode, mkdir);