mirror of
https://github.com/systemd/systemd.git
synced 2025-02-22 09:57:34 +03:00
shared: export is_dir
This commit is contained in:
parent
d18d46ecea
commit
6cf487afad
@ -58,7 +58,7 @@ int mkdir_safe(const char *path, mode_t mode, uid_t uid, gid_t gid) {
|
||||
return mkdir_safe_internal(path, mode, uid, gid, mkdir);
|
||||
}
|
||||
|
||||
static int is_dir(const char* path) {
|
||||
int is_dir(const char* path) {
|
||||
struct stat st;
|
||||
|
||||
if (stat(path, &st) < 0)
|
||||
|
@ -41,3 +41,4 @@ typedef int (*mkdir_func_t)(const char *pathname, mode_t mode);
|
||||
int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, mkdir_func_t _mkdir);
|
||||
int mkdir_parents_internal(const char *prefix, const char *path, mode_t mode, mkdir_func_t _mkdir);
|
||||
int mkdir_p_internal(const char *prefix, const char *path, mode_t mode, mkdir_func_t _mkdir);
|
||||
int is_dir(const char *path);
|
||||
|
@ -542,7 +542,7 @@ static int recursive_relabel_children(Item *i, const char *path) {
|
||||
|
||||
for (;;) {
|
||||
struct dirent *de;
|
||||
bool is_dir;
|
||||
bool dir;
|
||||
int r;
|
||||
_cleanup_free_ char *entry_path = NULL;
|
||||
|
||||
@ -567,18 +567,17 @@ static int recursive_relabel_children(Item *i, const char *path) {
|
||||
}
|
||||
|
||||
if (de->d_type == DT_UNKNOWN) {
|
||||
struct stat st;
|
||||
|
||||
if (lstat(entry_path, &st) < 0) {
|
||||
r = is_dir(entry_path);
|
||||
if (r < 0) {
|
||||
if (ret == 0 && errno != ENOENT)
|
||||
ret = -errno;
|
||||
continue;
|
||||
}
|
||||
|
||||
is_dir = S_ISDIR(st.st_mode);
|
||||
dir = r;
|
||||
|
||||
} else
|
||||
is_dir = de->d_type == DT_DIR;
|
||||
dir = de->d_type == DT_DIR;
|
||||
|
||||
r = item_set_perms(i, entry_path);
|
||||
if (r < 0) {
|
||||
@ -587,7 +586,7 @@ static int recursive_relabel_children(Item *i, const char *path) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (is_dir) {
|
||||
if (dir) {
|
||||
r = recursive_relabel_children(i, entry_path);
|
||||
if (r < 0 && ret == 0)
|
||||
ret = r;
|
||||
|
Loading…
x
Reference in New Issue
Block a user