/* A POSIX-like <errno.h>.

   Copyright (C) 2008-2016 Free Software Foundation, Inc.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU Lesser General Public License as published by
   the Free Software Foundation; either version 2.1, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public License
   along with this program; if not, see <http://www.gnu.org/licenses/>.  */

#ifndef _@GUARD_PREFIX@_ERRNO_H

#if __GNUC__ >= 3
@PRAGMA_SYSTEM_HEADER@
#endif
@PRAGMA_COLUMNS@

/* The include_next requires a split double-inclusion guard.  */
#@INCLUDE_NEXT@ @NEXT_ERRNO_H@

#ifndef _@GUARD_PREFIX@_ERRNO_H
#define _@GUARD_PREFIX@_ERRNO_H


/* On native Windows platforms, many macros are not defined.  */
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ && ! defined __MSYS__

/* These are intentionally the same values as the WSA* error numbers, defined
   in <winsock2.h>.  */
#ifndef ENOTEMPTY
#define ENOTEMPTY        41
#endif
#ifndef WSAENOTEMPTY
#define WSAENOTEMPTY     10066L
#endif
#ifndef EADDRINUSE
#define EADDRINUSE       100
#endif
#ifndef WSAEADDRINUSE
#define WSAEADDRINUSE    10048L
#endif
#ifndef EADDRNOTAVAIL
#define EADDRNOTAVAIL    101
#endif
#ifndef WSAEADDRNOTAVAIL
#define WSAEADDRNOTAVAIL 10049L
#endif
#ifndef EAFNOSUPPORT
#define EAFNOSUPPORT     102
#endif
#ifndef WSAEAFNOSUPPORT
#define WSAEAFNOSUPPORT  10047L
#endif
#ifndef EALREADY
#define EALREADY         103
#endif
#ifndef WSAEALREADY
#define WSAEALREADY      10037L
#endif
#ifndef EBADMSG
#define EBADMSG          104
#define GNULIB_defined_EBADMSG 1
#endif
#ifndef ECANCELED
#define ECANCELED        105
#define GNULIB_defined_ECANCELED 1
#endif
#ifndef ECONNABORTED
#define ECONNABORTED     106
#define GNULIB_defined_ECONNABORTED 1
#endif
#ifndef WSAECONNABORTED
#define WSAECONNABORTED  10053L
#endif
#ifndef ECONNREFUSED
#define ECONNREFUSED     107
#endif
#ifndef WSAECONNREFUSED
#define WSAECONNREFUSED  10061L
#endif
#ifndef ECONNRESET
#define ECONNRESET       108
#endif
#ifndef WSAECONNRESET
#define WSAECONNRESET    10054L
#endif
#ifndef EDESTADDRREQ
#define EDESTADDRREQ     109
#endif
#ifndef WSAEDESTADDRREQ
#define WSAEDESTADDRREQ  10039L
#endif
#ifndef EHOSTUNREACH
#define EHOSTUNREACH     110
#endif
#ifndef WSAEHOSTUNREACH
#define WSAEHOSTUNREACH  10065L
#endif
#ifndef EIDRM
#define EIDRM            111
#define GNULIB_defined_EIDRM 1
#endif
#ifndef EINPROGRESS
#define EINPROGRESS      112
#define GNULIB_defined_ESOCK 1
#endif
#ifndef WSAEINPROGRESS
#define WSAEINPROGRESS   10036L
#endif
#ifndef EISCONN
#define EISCONN          113
#endif
#ifndef WSAEISCONN
#define WSAEISCONN       10056L
#endif
#ifndef ELOOP
#define ELOOP            114
#endif
#ifndef WSAELOOP
#define WSAELOOP         10062L
#endif
#ifndef EMSGSIZE
#define EMSGSIZE         115
#endif
#ifndef WSAEMSGSIZE
#define WSAEMSGSIZE      10040L
#endif
#ifndef ENETDOWN
#define ENETDOWN         116
#endif
#ifndef WSAENETDOWN
#define WSAENETDOWN      10050L
#endif
#ifndef ENETRESET
#define ENETRESET        117
#define GNULIB_defined_ENETRESET 1
#endif
#ifndef WSAENETRESET
#define WSAENETRESET     10052L
#endif
#ifndef ENETUNREACH
#define ENETUNREACH      118
#endif
#ifndef WSAENETUNREACH
#define WSAENETUNREACH   10051L
#endif
#ifndef ENOBUFS
#define ENOBUFS          119
#endif
#ifndef WSAENOBUFS
#define WSAENOBUFS       10055L
#endif
#ifndef ENODATA
#define ENODATA          120
#endif
#ifndef ENOLINK
#define ENOLINK          121
#define GNULIB_defined_ENOLINK 1
#endif
#ifndef ENOMSG
#define ENOMSG           122
#define GNULIB_defined_ENOMSG 1
#endif
#ifndef ENOPROTOOPT
#define ENOPROTOOPT      123
#endif
#ifndef WSAENOPROTOOPT
#define WSAENOPROTOOPT   10042L
#endif
#ifndef ENOSR
#define ENOSR            124
#endif
#ifndef ENOSTR
#define ENOSTR           125
#endif
#ifndef ENOTCONN
#define ENOTCONN         126
#endif
#ifndef WSAENOTCONN
#define WSAENOTCONN      10057L
#endif
#ifndef ENOTRECOVERABLE
#define ENOTRECOVERABLE  127
#define GNULIB_defined_ENOTRECOVERABLE 1
#endif
#ifndef ENOTSOCK
#define ENOTSOCK         128
#endif
#ifndef WSAENOTSOCK
#define WSAENOTSOCK      10038L
#endif
#ifndef ENOTSUP
#define ENOTSUP          129
#define GNULIB_defined_ENOTSUP 1
#endif
#ifndef EOPNOTSUPP
#define EOPNOTSUPP       130
#endif
#ifndef WSAEOPNOTSUPP
#define WSAEOPNOTSUPP    10045L
#endif
#ifndef EOTHER
#define EOTHER           131
#endif
#ifndef EOVERFLOW
#define EOVERFLOW        132
#define GNULIB_defined_EOVERFLOW 1
#endif
#ifndef EOWNERDEAD
#define EOWNERDEAD       133
#define GNULIB_defined_EOWNERDEAD 1
#endif
#ifndef EPROTO
#define EPROTO           134
#define GNULIB_defined_EPROTO 1
#endif
#ifndef EPROTONOSUPPORT
#define EPROTONOSUPPORT  135
#endif
#ifndef WSAEPROTONOSUPPORT
#define WSAEPROTONOSUPPORT 10043L
#endif
#ifndef EPROTOTYPE
#define EPROTOTYPE       136
#endif
#ifndef WSAEPROTOTYPE
#define WSAEPROTOTYPE    10041L
#endif
#ifndef ETIME
#define ETIME            137
#endif
#ifndef ETIMEDOUT
#define ETIMEDOUT        138
#endif
#ifndef WSAETIMEDOUT
#define WSAETIMEDOUT     10060L
#endif
#ifndef ETXTBSY
#define ETXTBSY          139
#define GNULIB_defined_ETXTBSY 1
#define GNULIB_defined_ESTREAMS 1
#endif
#ifndef EWOULDBLOCK
#define EWOULDBLOCK      140
#endif
#ifndef WSAEWOULDBLOCK
#define WSAEWOULDBLOCK   10035L
#endif

#ifndef WSAESOCKTNOSUPPORT
#  define WSAESOCKTNOSUPPORT 10044L  /* not required by POSIX */
#endif
#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
#ifndef WSAEPFNOSUPPORT
#  define WSAEPFNOSUPPORT    10046L  /* not required by POSIX */
#endif
#define EPFNOSUPPORT WSAEPFNOSUPPORT
#ifndef WSAESHUTDOWN
#  define WSAESHUTDOWN       10058L  /* not required by POSIX */
#endif
#define ESHUTDOWN WSAESHUTDOWN
#ifndef WSAETOOMANYREFS
#  define WSAETOOMANYREFS    10059L  /* not required by POSIX */
#endif
#define ETOOMANYREFS WSAETOOMANYREFS
#ifndef WSAWSAEHOSTDOWN
#  define WSAEHOSTDOWN    10064L  /* not required by POSIX */
#endif
#define EHOSTDOWN WSAEHOSTDOWN
#ifndef WSAEPROCLIM
#  define WSAEPROCLIM        10067L  /* not required by POSIX */
#endif
#define EPROCLIM WSAEPROCLIM
#ifndef WSAEUSERS
#  define WSAEUSERS          10068L  /* not required by POSIX */
#endif
#define EUSERS WSAEUSERS
#ifndef WSAEDQUOT
#  define WSAEDQUOT          10069L
#endif
#define EDQUOT WSAEDQUOT
#ifndef WSAESTALE
#  define WSAESTALE          10070L
#endif
#define ESTALE WSAESTALE
#ifndef WSAEREMOTE
#  define WSAEREMOTE         10071L  /* not required by POSIX */
#endif
#define EREMOTE WSAEREMOTE
#  define GNULIB_defined_EWINSOCK 1

# endif


/* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros
   EMULTIHOP, ENOLINK, EOVERFLOW are not defined.  */
# if @EMULTIHOP_HIDDEN@ /* EMULTIHOP_HIDDEN */
#  define EMULTIHOP @EMULTIHOP_VALUE@
#  define GNULIB_defined_EMULTIHOP 1
# endif
# if @ENOLINK_HIDDEN@ /* ENOLINK_HIDDEN */
#  define ENOLINK   @ENOLINK_VALUE@
#  define GNULIB_defined_ENOLINK 1
# endif
# if @EOVERFLOW_HIDDEN@ /* EOVERFLOW_HIDDEN */
#  define EOVERFLOW @EOVERFLOW_VALUE@
#  define GNULIB_defined_EOVERFLOW 1
# endif


/* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK,
   EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined.
   Likewise, on NonStop Kernel, EDQUOT is not defined.
   Define them here.  Values >= 2000 seem safe to use: Solaris ESTALE = 151,
   HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133.

   Note: When one of these systems defines some of these macros some day,
   binaries will have to be recompiled so that they recognizes the new
   errno values from the system.  */

# ifndef ENOMSG
#  define ENOMSG    2000
#  define GNULIB_defined_ENOMSG 1
# endif

# ifndef EIDRM
#  define EIDRM     2001
#  define GNULIB_defined_EIDRM 1
# endif

# ifndef ENOLINK
#  define ENOLINK   2002
#  define GNULIB_defined_ENOLINK 1
# endif

# ifndef EPROTO
#  define EPROTO    2003
#  define GNULIB_defined_EPROTO 1
# endif

# ifndef EMULTIHOP
#  define EMULTIHOP 2004
#  define GNULIB_defined_EMULTIHOP 1
# endif

# ifndef EBADMSG
#  define EBADMSG   2005
#  define GNULIB_defined_EBADMSG 1
# endif

# ifndef EOVERFLOW
#  define EOVERFLOW 2006
#  define GNULIB_defined_EOVERFLOW 1
# endif

# ifndef ENOTSUP
#  define ENOTSUP   2007
#  define GNULIB_defined_ENOTSUP 1
# endif

# ifndef ENETRESET
#  define ENETRESET 2011
#  define GNULIB_defined_ENETRESET 1
# endif

# ifndef ECONNABORTED
#  define ECONNABORTED 2012
#  define GNULIB_defined_ECONNABORTED 1
# endif

# ifndef ESTALE
#  define ESTALE    2009
#  define GNULIB_defined_ESTALE 1
# endif

# ifndef EDQUOT
#  define EDQUOT 2010
#  define GNULIB_defined_EDQUOT 1
# endif

# ifndef ECANCELED
#  define ECANCELED 2008
#  define GNULIB_defined_ECANCELED 1
# endif

/* On many platforms, the macros EOWNERDEAD and ENOTRECOVERABLE are not
   defined.  */

# ifndef EOWNERDEAD
#  if defined __sun
    /* Use the same values as defined for Solaris >= 8, for
       interoperability.  */
#   define EOWNERDEAD      58
#   define ENOTRECOVERABLE 59
#  elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
    /* We have a conflict here: pthreads-win32 defines these values
       differently than MSVC 10.  It's hairy to decide which one to use.  */
#   if defined __MINGW32__ && !defined USE_WINDOWS_THREADS
     /* Use the same values as defined by pthreads-win32, for
        interoperability.  */
#    define EOWNERDEAD      43
#    define ENOTRECOVERABLE 44
#   else
     /* Use the same values as defined by MSVC 10, for
        interoperability.  */
#    define EOWNERDEAD      133
#    define ENOTRECOVERABLE 127
#   endif
#  else
#   define EOWNERDEAD      2013
#   define ENOTRECOVERABLE 2014
#  endif
#  define GNULIB_defined_EOWNERDEAD 1
#  define GNULIB_defined_ENOTRECOVERABLE 1
# endif

# ifndef EILSEQ
#  define EILSEQ 2015
#  define GNULIB_defined_EILSEQ 1
# endif

#endif /* _@GUARD_PREFIX@_ERRNO_H */
#endif /* _@GUARD_PREFIX@_ERRNO_H */
