mirror of
https://github.com/systemd/systemd.git
synced 2026-08-06 16:10:59 +00:00
fs-util: at_flags_normalize_nofollow() follow-up (#36116)
Just some extension to 6981203f3a
This commit is contained in:
@@ -172,3 +172,12 @@ static inline int at_flags_normalize_nofollow(int flags) {
|
||||
flags |= AT_SYMLINK_NOFOLLOW;
|
||||
return flags;
|
||||
}
|
||||
|
||||
static inline int at_flags_normalize_follow(int flags) {
|
||||
if (FLAGS_SET(flags, AT_SYMLINK_NOFOLLOW)) {
|
||||
assert(!FLAGS_SET(flags, AT_SYMLINK_FOLLOW));
|
||||
flags &= ~AT_SYMLINK_NOFOLLOW;
|
||||
} else
|
||||
flags |= AT_SYMLINK_FOLLOW;
|
||||
return flags;
|
||||
}
|
||||
|
||||
@@ -298,7 +298,7 @@ int inode_same_at(int fda, const char *filea, int fdb, const char *fileb, int fl
|
||||
flags |= AT_EMPTY_PATH;
|
||||
}
|
||||
|
||||
int ntha_flags = (flags & AT_EMPTY_PATH) | (FLAGS_SET(flags, AT_SYMLINK_NOFOLLOW) ? 0 : AT_SYMLINK_FOLLOW);
|
||||
int ntha_flags = at_flags_normalize_follow(flags) & (AT_EMPTY_PATH|AT_SYMLINK_FOLLOW);
|
||||
_cleanup_free_ struct file_handle *ha = NULL, *hb = NULL;
|
||||
int mntida = -1, mntidb = -1;
|
||||
|
||||
|
||||
@@ -175,7 +175,7 @@ int fd_getcrtime_at(
|
||||
* most sense. */
|
||||
|
||||
if (statx(fd, strempty(path),
|
||||
(flags & ~AT_SYMLINK_FOLLOW)|(FLAGS_SET(flags, AT_SYMLINK_FOLLOW) ? 0 : AT_SYMLINK_NOFOLLOW)|AT_STATX_DONT_SYNC,
|
||||
at_flags_normalize_nofollow(flags)|AT_STATX_DONT_SYNC,
|
||||
STATX_BTIME,
|
||||
&sx) >= 0 &&
|
||||
(sx.stx_mask & STATX_BTIME) &&
|
||||
|
||||
Reference in New Issue
Block a user