This is the reverse of at_flags_normalize_follow()
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;
+}
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;