From: Daan De Meyer Date: Thu, 1 Jun 2023 11:57:58 +0000 (+0200) Subject: stat-util: Add is_fs_type_at() X-Git-Tag: v254-rc1~269^2~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b196e17ed40987b102d72993d15de3567be742cb;p=thirdparty%2Fsystemd.git stat-util: Add is_fs_type_at() --- diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c index 4db11f92991..3c999098e15 100644 --- a/src/basic/stat-util.c +++ b/src/basic/stat-util.c @@ -207,20 +207,13 @@ bool is_fs_type(const struct statfs *s, statfs_f_type_t magic_value) { return F_TYPE_EQUAL(s->f_type, magic_value); } -int fd_is_fs_type(int fd, statfs_f_type_t magic_value) { - struct statfs s; - - if (fstatfs(fd, &s) < 0) - return -errno; - - return is_fs_type(&s, magic_value); -} - -int path_is_fs_type(const char *path, statfs_f_type_t magic_value) { +int is_fs_type_at(int dir_fd, const char *path, statfs_f_type_t magic_value) { struct statfs s; + int r; - if (statfs(path, &s) < 0) - return -errno; + r = xstatfsat(dir_fd, path, &s); + if (r < 0) + return r; return is_fs_type(&s, magic_value); } diff --git a/src/basic/stat-util.h b/src/basic/stat-util.h index 3ae8b3eeb1b..ae0aaf8f512 100644 --- a/src/basic/stat-util.h +++ b/src/basic/stat-util.h @@ -48,8 +48,13 @@ static inline int inode_same(const char *filea, const char *fileb, int flags) { typedef typeof(((struct statfs*)NULL)->f_type) statfs_f_type_t; bool is_fs_type(const struct statfs *s, statfs_f_type_t magic_value) _pure_; -int fd_is_fs_type(int fd, statfs_f_type_t magic_value); -int path_is_fs_type(const char *path, statfs_f_type_t magic_value); +int is_fs_type_at(int dir_fd, const char *path, statfs_f_type_t magic_value); +static inline int fd_is_fs_type(int fd, statfs_f_type_t magic_value) { + return is_fs_type_at(fd, NULL, magic_value); +} +static inline int path_is_fs_type(const char *path, statfs_f_type_t magic_value) { + return is_fs_type_at(AT_FDCWD, path, magic_value); +} bool is_temporary_fs(const struct statfs *s) _pure_; bool is_network_fs(const struct statfs *s) _pure_;