Exemple #1
0
int mkdir_p_internal(const char *prefix, const char *path, mode_t mode, mkdir_func_t _mkdir) {
        int r;

        /* Like mkdir -p */

        r = mkdir_parents_internal(prefix, path, mode, _mkdir);
        if (r < 0)
                return r;

        r = _mkdir(path, mode);
        if (r < 0 && (errno != EEXIST || is_dir(path, true) <= 0))
                return -errno;

        return 0;
}
Exemple #2
0
static int mkdir_p_internal(const char *prefix, const char *path, mode_t mode, bool apply) {
        int r;

        /* Like mkdir -p */

        r = mkdir_parents_internal(prefix, path, mode, apply);
        if (r < 0)
                return r;

        r = label_mkdir(path, mode, apply);
        if (r < 0 && (errno != EEXIST || is_dir(path) <= 0))
                return -errno;

        return 0;
}
Exemple #3
0
int mkdir_parents(const char *path, mode_t mode) {
        return mkdir_parents_internal(NULL, path, mode, mkdir_errno_wrapper);
}
Exemple #4
0
int mkdir_parents_label(const char *path, mode_t mode) {
        return mkdir_parents_internal(NULL, path, mode, mkdir_label);
}
Exemple #5
0
int mkdir_parents_prefix(const char *prefix, const char *path, mode_t mode) {
        return mkdir_parents_internal(prefix, path, mode, true);
}
Exemple #6
0
int mkdir_parents(const char *path, mode_t mode) {
        return mkdir_parents_internal(NULL, path, mode, false);
}