1#ifndef _INC_SYS_ERRNO2 2#define _INC_SYS_ERRNO2 3 4/* Too late to include winsock2.h if winsock.h has already been loaded */ 5#ifndef _WINSOCKAPI_ 6# include <winsock2.h> 7#endif 8 9/* Ensure all the Exxx constants required by convert_wsa_error_to_errno() in 10 * win32/win32sck.c are defined. Many are defined in <errno.h> already (more so 11 * in VC++ 2010 and above and some MinGW/gcc-4.8 and above, which have an extra 12 * "POSIX supplement") so, for the sake of compatibility with third-party code 13 * linked into XS modules, we must be careful not to redefine them; for the 14 * remainder we define our own values, namely the corresponding WSAExxx values. 15 * 16 * These definitions are also used as a supplement to the use of <errno.h> in 17 * the Errno and POSIX modules, both of which may be used to test the value of 18 * $!, which may have these values assigned to it (via code in win32/win32sck.c 19 * and the $! case in Perl_magic_set()). It also provides numerous otherwise 20 * missing values in the (hard-coded) list of Exxx constants exported by POSIX. 21 * Finally, three of the non-standard errno.h values (actually all now in the 22 * POSIX supplement in VC10+ and some MinGW/gcc-4.8+) are used in the perl core. 23 * 24 * This list is in the same order as that in convert_wsa_error_to_errno(). A 25 * handful of WSAExxx constants used by that function have no corresponding Exxx 26 * constant in any errno.h so there is no point in making up values for them; 27 * they are just returned unchanged by that function so we do not need to worry 28 * about them here. 29 */ 30 31/* EINTR is a standard errno.h value */ 32/* EBADF is a standard errno.h value */ 33/* EACCES is a standard errno.h value */ 34/* EFAULT is a standard errno.h value */ 35/* EINVAL is a standard errno.h value */ 36/* EMFILE is a standard errno.h value */ 37 38#ifndef EWOULDBLOCK /* New in VC10 */ 39# define EWOULDBLOCK WSAEWOULDBLOCK 40#endif 41#ifndef EINPROGRESS /* New in VC10 */ 42# define EINPROGRESS WSAEINPROGRESS 43#endif 44#ifndef EALREADY /* New in VC10 */ 45# define EALREADY WSAEALREADY 46#endif 47#ifndef ENOTSOCK /* New in VC10 and needed in doio.c */ 48# define ENOTSOCK WSAENOTSOCK 49#endif 50#ifndef EDESTADDRREQ /* New in VC10 */ 51# define EDESTADDRREQ WSAEDESTADDRREQ 52#endif 53#ifndef EMSGSIZE /* New in VC10 */ 54# define EMSGSIZE WSAEMSGSIZE 55#endif 56#ifndef EPROTOTYPE /* New in VC10 */ 57# define EPROTOTYPE WSAEPROTOTYPE 58#endif 59#ifndef ENOPROTOOPT /* New in VC10 */ 60# define ENOPROTOOPT WSAENOPROTOOPT 61#endif 62#ifndef EPROTONOSUPPORT /* New in VC10 */ 63# define EPROTONOSUPPORT WSAEPROTONOSUPPORT 64#endif 65#ifndef ESOCKTNOSUPPORT /* Not in errno.h but wanted by POSIX.pm */ 66# define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT 67#endif 68#ifndef EOPNOTSUPP /* New in VC10 */ 69# define EOPNOTSUPP WSAEOPNOTSUPP 70#endif 71#ifndef EPFNOSUPPORT /* Not in errno.h but wanted by POSIX.pm */ 72# define EPFNOSUPPORT WSAEPFNOSUPPORT 73#endif 74#ifndef EAFNOSUPPORT /* New in VC10 and needed in util.c */ 75# define EAFNOSUPPORT WSAEAFNOSUPPORT 76#endif 77#ifndef EADDRINUSE /* New in VC10 */ 78# define EADDRINUSE WSAEADDRINUSE 79#endif 80#ifndef EADDRNOTAVAIL /* New in VC10 */ 81# define EADDRNOTAVAIL WSAEADDRNOTAVAIL 82#endif 83#ifndef ENETDOWN /* New in VC10 */ 84# define ENETDOWN WSAENETDOWN 85#endif 86#ifndef ENETUNREACH /* New in VC10 */ 87# define ENETUNREACH WSAENETUNREACH 88#endif 89#ifndef ENETRESET /* New in VC10 */ 90# define ENETRESET WSAENETRESET 91#endif 92#ifndef ECONNABORTED /* New in VC10 and needed in util.c */ 93# define ECONNABORTED WSAECONNABORTED 94#endif 95#ifndef ECONNRESET /* New in VC10 */ 96# define ECONNRESET WSAECONNRESET 97#endif 98#ifndef ENOBUFS /* New in VC10 */ 99# define ENOBUFS WSAENOBUFS 100#endif 101#ifndef EISCONN /* New in VC10 */ 102# define EISCONN WSAEISCONN 103#endif 104#ifndef ENOTCONN /* New in VC10 */ 105# define ENOTCONN WSAENOTCONN 106#endif 107#ifndef ESHUTDOWN /* Not in errno.h but wanted by POSIX.pm */ 108# define ESHUTDOWN WSAESHUTDOWN 109#endif 110#ifndef ETOOMANYREFS /* Not in errno.h but wanted by POSIX.pm */ 111# define ETOOMANYREFS WSAETOOMANYREFS 112#endif 113#ifndef ETIMEDOUT /* New in VC10 */ 114# define ETIMEDOUT WSAETIMEDOUT 115#endif 116#ifndef ECONNREFUSED /* New in VC10 */ 117# define ECONNREFUSED WSAECONNREFUSED 118#endif 119#ifndef ELOOP /* New in VC10 */ 120# define ELOOP WSAELOOP 121#endif 122 123/* ENAMETOOLONG is a standard errno.h value */ 124 125/* EHOSTDOWN is not in errno.h and despite being wanted by POSIX.pm we cannot 126 * provide any sane value since there is no WSAEHOSTDOWN */ 127 128#ifndef EHOSTUNREACH /* New in VC10 */ 129# define EHOSTUNREACH WSAEHOSTUNREACH 130#endif 131 132/* ENOTEMPTY is a standard errno.h value */ 133 134#ifndef EPROCLIM /* Not in errno.h but wanted by POSIX.pm */ 135# define EPROCLIM WSAEPROCLIM 136#endif 137#ifndef EUSERS /* Not in errno.h but wanted by POSIX.pm */ 138# define EUSERS WSAEUSERS 139#endif 140#ifndef EDQUOT /* Not in errno.h but wanted by POSIX.pm */ 141# define EDQUOT WSAEDQUOT 142#endif 143#ifndef ESTALE /* Not in errno.h but wanted by POSIX.pm */ 144# define ESTALE WSAESTALE 145#endif 146#ifndef EREMOTE /* Not in errno.h but wanted by POSIX.pm */ 147# define EREMOTE WSAEREMOTE 148#endif 149 150/* EDISCON is not an errno.h value at all */ 151/* ENOMORE is not an errno.h value at all */ 152 153#ifndef ECANCELED /* New in VC10 */ 154# ifdef WSAECANCELLED /* New in WinSock2 */ 155# define ECANCELED WSAECANCELLED 156# endif 157#endif 158 159/* EINVALIDPROCTABLE is not an errno.h value at all */ 160/* EINVALIDPROVIDER is not an errno.h value at all */ 161/* EPROVIDERFAILEDINIT is not an errno.h value at all */ 162/* EREFUSED is not an errno.h value at all */ 163 164/* Set a flag indicating whether <errno.h> has the POSIX supplement (the first 165 * constant in which is EADDRINUSE). If so then we won't have just defined it as 166 * WSAEADDRINUSE above. 167 */ 168#undef ERRNO_HAS_POSIX_SUPPLEMENT 169#if EADDRINUSE != WSAEADDRINUSE 170# define ERRNO_HAS_POSIX_SUPPLEMENT 171#endif 172 173#endif /* _INC_SYS_ERRNO2 */ 174