From: Daan De Meyer Date: Fri, 31 Mar 2023 08:39:55 +0000 (+0200) Subject: stat-util: Add xstatfsat() X-Git-Tag: v254-rc1~837^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6eec59f9cc325a5491309a32aadc8fa0722992a1;p=thirdparty%2Fsystemd.git stat-util: Add xstatfsat() --- diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c index 2b09ab63b25..e97770707f2 100644 --- a/src/basic/stat-util.c +++ b/src/basic/stat-util.c @@ -455,6 +455,20 @@ int statx_fallback(int dfd, const char *path, int flags, unsigned mask, struct s return 0; } +int xstatfsat(int dir_fd, const char *path, struct statfs *ret) { + _cleanup_close_ int fd = -EBADF; + + assert(dir_fd >= 0 || dir_fd == AT_FDCWD); + assert(path); + assert(ret); + + fd = xopenat(dir_fd, path, O_PATH|O_CLOEXEC|O_NOCTTY, 0); + if (fd < 0) + return fd; + + return RET_NERRNO(fstatfs(fd, ret)); +} + void inode_hash_func(const struct stat *q, struct siphash *state) { siphash24_compress(&q->st_dev, sizeof(q->st_dev), state); siphash24_compress(&q->st_ino, sizeof(q->st_ino), state); diff --git a/src/basic/stat-util.h b/src/basic/stat-util.h index 726d0644aa6..e6b84d215e0 100644 --- a/src/basic/stat-util.h +++ b/src/basic/stat-util.h @@ -79,6 +79,8 @@ bool statx_mount_same(const struct new_statx *a, const struct new_statx *b); int statx_fallback(int dfd, const char *path, int flags, unsigned mask, struct statx *sx); +int xstatfsat(int dir_fd, const char *path, struct statfs *ret); + #if HAS_FEATURE_MEMORY_SANITIZER # warning "Explicitly initializing struct statx, to work around msan limitation. Please remove as soon as msan has been updated to not require this." # define STRUCT_STATX_DEFINE(var) \