/* Generated by ./xlat/gen.sh from ./xlat/open_mode_flags.in; do not edit. */
#if defined(O_NDELAY) && (O_NDELAY != O_NONBLOCK)
#endif
#if defined(O_TMPFILE) && defined(O_DIRECTORY)
#endif

#ifndef IN_MPERS

const struct xlat open_mode_flags[] = {
#if defined(O_CREAT) || (defined(HAVE_DECL_O_CREAT) && HAVE_DECL_O_CREAT)
  XLAT(O_CREAT),
#endif
#if defined(O_EXCL) || (defined(HAVE_DECL_O_EXCL) && HAVE_DECL_O_EXCL)
  XLAT(O_EXCL),
#endif
#if defined(O_NOCTTY) || (defined(HAVE_DECL_O_NOCTTY) && HAVE_DECL_O_NOCTTY)
  XLAT(O_NOCTTY),
#endif
#if defined(O_TRUNC) || (defined(HAVE_DECL_O_TRUNC) && HAVE_DECL_O_TRUNC)
  XLAT(O_TRUNC),
#endif
#if defined(O_APPEND) || (defined(HAVE_DECL_O_APPEND) && HAVE_DECL_O_APPEND)
  XLAT(O_APPEND),
#endif
#if defined(O_NONBLOCK) || (defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK)
  XLAT(O_NONBLOCK),
#endif
#if defined(O_SYNC) || (defined(HAVE_DECL_O_SYNC) && HAVE_DECL_O_SYNC)
  XLAT(O_SYNC),
#endif
#if defined(O_ASYNC) || (defined(HAVE_DECL_O_ASYNC) && HAVE_DECL_O_ASYNC)
  XLAT(O_ASYNC),
#endif
#if defined(O_DSYNC) || (defined(HAVE_DECL_O_DSYNC) && HAVE_DECL_O_DSYNC)
  XLAT(O_DSYNC),
#endif
#if defined(O_RSYNC) || (defined(HAVE_DECL_O_RSYNC) && HAVE_DECL_O_RSYNC)
  XLAT(O_RSYNC),
#endif
#if defined(O_NDELAY) && (O_NDELAY != O_NONBLOCK)
#if defined(O_NDELAY) || (defined(HAVE_DECL_O_NDELAY) && HAVE_DECL_O_NDELAY)
  XLAT(O_NDELAY),
#endif
#endif
#if defined(O_PRIV) || (defined(HAVE_DECL_O_PRIV) && HAVE_DECL_O_PRIV)
  XLAT(O_PRIV),
#endif
#if defined(O_DIRECT) || (defined(HAVE_DECL_O_DIRECT) && HAVE_DECL_O_DIRECT)
  XLAT(O_DIRECT),
#endif
#if defined(O_LARGEFILE) || (defined(HAVE_DECL_O_LARGEFILE) && HAVE_DECL_O_LARGEFILE)
  XLAT(O_LARGEFILE),
#endif
#if defined(O_DIRECTORY) || (defined(HAVE_DECL_O_DIRECTORY) && HAVE_DECL_O_DIRECTORY)
  XLAT(O_DIRECTORY),
#endif
#if defined(O_NOFOLLOW) || (defined(HAVE_DECL_O_NOFOLLOW) && HAVE_DECL_O_NOFOLLOW)
  XLAT(O_NOFOLLOW),
#endif
#if defined(O_NOATIME) || (defined(HAVE_DECL_O_NOATIME) && HAVE_DECL_O_NOATIME)
  XLAT(O_NOATIME),
#endif
#if defined(O_CLOEXEC) || (defined(HAVE_DECL_O_CLOEXEC) && HAVE_DECL_O_CLOEXEC)
  XLAT(O_CLOEXEC),
#endif
#if defined(O_PATH) || (defined(HAVE_DECL_O_PATH) && HAVE_DECL_O_PATH)
  XLAT(O_PATH),
#endif
#if defined(O_TMPFILE) && defined(O_DIRECTORY)
/* The kernel & C libraries often inline O_DIRECTORY */
{ O_TMPFILE & ~O_DIRECTORY, "O_TMPFILE" },
#endif
#if defined(FNDELAY) || (defined(HAVE_DECL_FNDELAY) && HAVE_DECL_FNDELAY)
  XLAT(FNDELAY),
#endif
#if defined(FAPPEND) || (defined(HAVE_DECL_FAPPEND) && HAVE_DECL_FAPPEND)
  XLAT(FAPPEND),
#endif
#if defined(FMARK) || (defined(HAVE_DECL_FMARK) && HAVE_DECL_FMARK)
  XLAT(FMARK),
#endif
#if defined(FDEFER) || (defined(HAVE_DECL_FDEFER) && HAVE_DECL_FDEFER)
  XLAT(FDEFER),
#endif
#if defined(FASYNC) || (defined(HAVE_DECL_FASYNC) && HAVE_DECL_FASYNC)
  XLAT(FASYNC),
#endif
#if defined(FSHLOCK) || (defined(HAVE_DECL_FSHLOCK) && HAVE_DECL_FSHLOCK)
  XLAT(FSHLOCK),
#endif
#if defined(FEXLOCK) || (defined(HAVE_DECL_FEXLOCK) && HAVE_DECL_FEXLOCK)
  XLAT(FEXLOCK),
#endif
#if defined(FCREAT) || (defined(HAVE_DECL_FCREAT) && HAVE_DECL_FCREAT)
  XLAT(FCREAT),
#endif
#if defined(FTRUNC) || (defined(HAVE_DECL_FTRUNC) && HAVE_DECL_FTRUNC)
  XLAT(FTRUNC),
#endif
#if defined(FEXCL) || (defined(HAVE_DECL_FEXCL) && HAVE_DECL_FEXCL)
  XLAT(FEXCL),
#endif
#if defined(FNBIO) || (defined(HAVE_DECL_FNBIO) && HAVE_DECL_FNBIO)
  XLAT(FNBIO),
#endif
#if defined(FSYNC) || (defined(HAVE_DECL_FSYNC) && HAVE_DECL_FSYNC)
  XLAT(FSYNC),
#endif
#if defined(FNOCTTY) || (defined(HAVE_DECL_FNOCTTY) && HAVE_DECL_FNOCTTY)
  XLAT(FNOCTTY),
#endif
#if defined(O_SHLOCK) || (defined(HAVE_DECL_O_SHLOCK) && HAVE_DECL_O_SHLOCK)
  XLAT(O_SHLOCK),
#endif
#if defined(O_EXLOCK) || (defined(HAVE_DECL_O_EXLOCK) && HAVE_DECL_O_EXLOCK)
  XLAT(O_EXLOCK),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
