From 6cf487afad4ef4706b5d6d9ba5df24cac68e687a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 2 Nov 2012 15:05:31 +0100 Subject: [PATCH] shared: export is_dir --- src/shared/mkdir.c | 2 +- src/shared/mkdir.h | 1 + src/tmpfiles/tmpfiles.c | 13 ++++++------- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/shared/mkdir.c b/src/shared/mkdir.c index b35551eb0..ba083d6d6 100644 --- a/src/shared/mkdir.c +++ b/src/shared/mkdir.c @@ -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) diff --git a/src/shared/mkdir.h b/src/shared/mkdir.h index eb73902fc..f1bf4c0a6 100644 --- a/src/shared/mkdir.h +++ b/src/shared/mkdir.h @@ -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); diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index 52f80379e..74a01271e 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -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; -- 2.30.2