/* Generated by ./xlat/gen.sh from ./xlat/at_flags.in; do not edit. */

#include "gcc_compat.h"
#include "static_assert.h"

#if defined(AT_SYMLINK_NOFOLLOW) || (defined(HAVE_DECL_AT_SYMLINK_NOFOLLOW) && HAVE_DECL_AT_SYMLINK_NOFOLLOW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AT_SYMLINK_NOFOLLOW) == (0x100), "AT_SYMLINK_NOFOLLOW != 0x100");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AT_SYMLINK_NOFOLLOW 0x100
#endif
#if defined(AT_REMOVEDIR) || (defined(HAVE_DECL_AT_REMOVEDIR) && HAVE_DECL_AT_REMOVEDIR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AT_REMOVEDIR) == (0x200), "AT_REMOVEDIR != 0x200");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AT_REMOVEDIR 0x200
#endif
#if defined(AT_SYMLINK_FOLLOW) || (defined(HAVE_DECL_AT_SYMLINK_FOLLOW) && HAVE_DECL_AT_SYMLINK_FOLLOW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AT_SYMLINK_FOLLOW) == (0x400), "AT_SYMLINK_FOLLOW != 0x400");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AT_SYMLINK_FOLLOW 0x400
#endif
#if defined(AT_NO_AUTOMOUNT) || (defined(HAVE_DECL_AT_NO_AUTOMOUNT) && HAVE_DECL_AT_NO_AUTOMOUNT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AT_NO_AUTOMOUNT) == (0x800), "AT_NO_AUTOMOUNT != 0x800");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AT_NO_AUTOMOUNT 0x800
#endif
#if defined(AT_EMPTY_PATH) || (defined(HAVE_DECL_AT_EMPTY_PATH) && HAVE_DECL_AT_EMPTY_PATH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AT_EMPTY_PATH) == (0x1000), "AT_EMPTY_PATH != 0x1000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AT_EMPTY_PATH 0x1000
#endif

#ifndef XLAT_MACROS_ONLY

# ifndef IN_MPERS

const struct xlat at_flags[] = {
 XLAT(AT_SYMLINK_NOFOLLOW),
 XLAT(AT_REMOVEDIR),
 XLAT(AT_SYMLINK_FOLLOW),
 XLAT(AT_NO_AUTOMOUNT),
 XLAT(AT_EMPTY_PATH),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
