From: Daan De Meyer Date: Thu, 24 Nov 2022 12:13:05 +0000 (+0100) Subject: dirent-util: Expose dirent_ensure_type() X-Git-Tag: v253-rc1~454^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=06da125ea19284a5200e206e704a37c17dbbab5e;p=thirdparty%2Fsystemd.git dirent-util: Expose dirent_ensure_type() --- 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);