]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
fs-util: also add an at_flags_normalize_follow() helper 36116/head
authorLennart Poettering <lennart@poettering.net>
Wed, 22 Jan 2025 10:54:34 +0000 (11:54 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 22 Jan 2025 16:46:50 +0000 (17:46 +0100)
This is the reverse of at_flags_normalize_follow()

src/basic/fs-util.h
src/basic/stat-util.c

index eb031a0ccde4516ff68b7654c50440b96638f47d..b2c01079901b9fdcef9b944e92a4eb2dd1f92612 100644 (file)
@@ -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;
+}
index 2181ee2df51dcefc2b54f4cb3b986a48d899d007..10bd7c0fe17dae50e0bd030f5cee060a81c12bee 100644 (file)
@@ -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;