From 06da125ea19284a5200e206e704a37c17dbbab5e Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Thu, 24 Nov 2022 13:13:05 +0100 Subject: [PATCH] dirent-util: Expose dirent_ensure_type() --- src/basic/dirent-util.c | 8 ++++---- src/basic/dirent-util.h | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/basic/dirent-util.c b/src/basic/dirent-util.c index 2eea228c20a..17df6a24c90 100644 --- a/src/basic/dirent-util.c +++ b/src/basic/dirent-util.c @@ -8,11 +8,11 @@ #include "stat-util.h" #include "string-util.h" -static int dirent_ensure_type(DIR *d, struct dirent *de) { +int dirent_ensure_type(int dir_fd, struct dirent *de) { STRUCT_STATX_DEFINE(sx); int r; - assert(d); + assert(dir_fd >= 0); assert(de); if (de->d_type != DT_UNKNOWN) @@ -24,7 +24,7 @@ static int dirent_ensure_type(DIR *d, struct dirent *de) { } /* Let's ask only for the type, nothing else. */ - r = statx_fallback(dirfd(d), de->d_name, AT_SYMLINK_NOFOLLOW|AT_NO_AUTOMOUNT, STATX_TYPE, &sx); + r = statx_fallback(dir_fd, de->d_name, AT_SYMLINK_NOFOLLOW|AT_NO_AUTOMOUNT, STATX_TYPE, &sx); if (r < 0) return r; @@ -80,7 +80,7 @@ struct dirent *readdir_ensure_type(DIR *d) { if (!de) return NULL; - r = dirent_ensure_type(d, de); + r = dirent_ensure_type(dirfd(d), de); if (r >= 0) return de; if (r != -ENOENT) { diff --git a/src/basic/dirent-util.h b/src/basic/dirent-util.h index 5fde9043a30..0f1fb231190 100644 --- a/src/basic/dirent-util.h +++ b/src/basic/dirent-util.h @@ -10,6 +10,7 @@ bool dirent_is_file(const struct dirent *de) _pure_; bool dirent_is_file_with_suffix(const struct dirent *de, const char *suffix) _pure_; +int dirent_ensure_type(int dir_fd, struct dirent *de); struct dirent *readdir_ensure_type(DIR *d); struct dirent *readdir_no_dot(DIR *dirp); -- 2.47.3