]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
fs-util: introduce at_flags_normalize_nofollow() helper
authorMike Yuan <me@yhndnzj.com>
Mon, 20 Jan 2025 20:15:46 +0000 (21:15 +0100)
committerMike Yuan <me@yhndnzj.com>
Tue, 21 Jan 2025 23:52:34 +0000 (00:52 +0100)
src/basic/fs-util.h

index 5ee7417eeb4488735957a3dc831aecbe347eb5b3..eb031a0ccde4516ff68b7654c50440b96638f47d 100644 (file)
@@ -163,3 +163,12 @@ static inline int xopenat_lock(int dir_fd, const char *path, int open_flags, Loc
 int link_fd(int fd, int newdirfd, const char *newpath);
 
 int linkat_replace(int olddirfd, const char *oldpath, int newdirfd, const char *newpath);
+
+static inline int at_flags_normalize_nofollow(int flags) {
+        if (FLAGS_SET(flags, AT_SYMLINK_FOLLOW)) {
+                assert(!FLAGS_SET(flags, AT_SYMLINK_NOFOLLOW));
+                flags &= ~AT_SYMLINK_FOLLOW;
+        } else
+                flags |= AT_SYMLINK_NOFOLLOW;
+        return flags;
+}