/* Generated by ./xlat/gen.sh from ./xlat/open_mode_flags.in; do not edit. */
#if defined(O_NDELAY) && (O_NDELAY != O_NONBLOCK)
#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_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_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(HAVE_DECL_O_TMPFILE) && HAVE_DECL_O_TMPFILE)
  XLAT(O_TMPFILE),
#endif
#if defined(__O_TMPFILE) || (defined(HAVE_DECL___O_TMPFILE) && HAVE_DECL___O_TMPFILE)
  XLAT(__O_TMPFILE),
#endif
#if defined(O_DIRECTORY) || (defined(HAVE_DECL_O_DIRECTORY) && HAVE_DECL_O_DIRECTORY)
  XLAT(O_DIRECTORY),
#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 */
