stat-util: add _at() variant for files_same()

This commit is contained in:
Lennart Poettering 2023-05-15 21:20:17 +02:00
parent e47622a61c
commit 676ade310a
2 changed files with 10 additions and 4 deletions

View file

@ -183,16 +183,18 @@ int path_is_read_only_fs(const char *path) {
return fd_is_read_only_fs(fd);
}
int files_same(const char *filea, const char *fileb, int flags) {
int files_same_at(int fda, const char *filea, int fdb, const char *fileb, int flags) {
struct stat a, b;
assert(fda >= 0 || fda == AT_FDCWD);
assert(filea);
assert(fdb >= 0 || fdb == AT_FDCWD);
assert(fileb);
if (fstatat(AT_FDCWD, filea, &a, flags) < 0)
if (fstatat(fda, filea, &a, flags) < 0)
return log_debug_errno(errno, "Cannot stat %s: %m", filea);
if (fstatat(AT_FDCWD, fileb, &b, flags) < 0)
if (fstatat(fdb, fileb, &b, flags) < 0)
return log_debug_errno(errno, "Cannot stat %s: %m", fileb);
return stat_inode_same(&a, &b);

View file

@ -37,7 +37,11 @@ static inline int null_or_empty_path(const char *fn) {
int path_is_read_only_fs(const char *path);
int files_same(const char *filea, const char *fileb, int flags);
int files_same_at(int fda, const char *filea, int fdb, const char *fileb, int flags);
static inline int files_same(const char *filea, const char *fileb, int flags) {
return files_same_at(AT_FDCWD, filea, AT_FDCWD, fileb, flags);
}
/* The .f_type field of struct statfs is really weird defined on
* different archs. Let's give its type a name. */