diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2012-03-23 15:53:52 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2012-03-23 15:53:52 (GMT) |
commit | e59a3fc9085a57bbc964aa61790417af5797794d (patch) | |
tree | 2e156a8b477c55fb54f1ba2a6bc62c03ef274c6d /win/tclWinError.c | |
parent | 7bfb05f7fb4dd46306021ae1e767db1edae74593 (diff) | |
parent | fa9a43ff5fd981089f0a432872444073f8710c99 (diff) | |
download | tcl-e59a3fc9085a57bbc964aa61790417af5797794d.zip tcl-e59a3fc9085a57bbc964aa61790417af5797794d.tar.gz tcl-e59a3fc9085a57bbc964aa61790417af5797794d.tar.bz2 |
Revert some cygwin-related signature changes from [835f8e1e9d] (2010-01-22).
They were an attempt to make the cygwin port compile again, but since cygwin
is based on unix this serves no purpose any more.
Use EAGAIN in stead of EWOULDBLOCK, because in VS10+ the value of EWOULDBLOCK
is no longer the same as EAGAIN
Add tclWinError.c to the CYGWIN build.
Diffstat (limited to 'win/tclWinError.c')
-rw-r--r-- | win/tclWinError.c | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/win/tclWinError.c b/win/tclWinError.c index 4fee02b..1b59dbe 100644 --- a/win/tclWinError.c +++ b/win/tclWinError.c @@ -12,11 +12,19 @@ #include "tclInt.h" +#ifndef WSAEWOULDBLOCK +# define WSAEWOULDBLOCK 10035L +#endif + +#ifndef __WIN32__ +# define DWORD unsigned int +#endif + /* * The following table contains the mapping from Win32 errors to errno errors. */ -static char errorTable[] = { +static const unsigned char errorTable[] = { 0, EINVAL, /* ERROR_INVALID_FUNCTION 1 */ ENOENT, /* ERROR_FILE_NOT_FOUND 2 */ @@ -284,18 +292,16 @@ static char errorTable[] = { EINVAL, /* 264 */ EINVAL, /* 265 */ EINVAL, /* 266 */ - ENOTDIR, /* ERROR_DIRECTORY 267 */ + ENOTDIR /* ERROR_DIRECTORY 267 */ }; -static const unsigned int tableLen = sizeof(errorTable); - /* * The following table contains the mapping from WinSock errors to * errno errors. */ -static int wsaErrorTable[] = { - EWOULDBLOCK, /* WSAEWOULDBLOCK */ +static const unsigned char wsaErrorTable[] = { + EAGAIN, /* WSAEWOULDBLOCK */ EINPROGRESS, /* WSAEINPROGRESS */ EALREADY, /* WSAEALREADY */ ENOTSOCK, /* WSAENOTSOCK */ @@ -331,7 +337,7 @@ static int wsaErrorTable[] = { EUSERS, /* WSAEUSERS */ EDQUOT, /* WSAEDQUOT */ ESTALE, /* WSAESTALE */ - EREMOTE, /* WSAEREMOTE */ + EREMOTE /* WSAEREMOTE */ }; /* @@ -352,9 +358,9 @@ static int wsaErrorTable[] = { void TclWinConvertError( - unsigned long errCode) /* Win32 error code. */ + DWORD errCode) /* Win32 error code. */ { - if (errCode >= tableLen) { + if (errCode >= sizeof(errorTable)/sizeof(errorTable[0])) { Tcl_SetErrno(EINVAL); } else { Tcl_SetErrno(errorTable[errCode]); @@ -379,12 +385,13 @@ TclWinConvertError( void TclWinConvertWSAError( - unsigned long errCode) /* Win32 error code. */ + DWORD errCode) /* Win32 error code. */ { - if ((errCode >= WSAEWOULDBLOCK) && (errCode <= WSAEREMOTE)) { - Tcl_SetErrno(wsaErrorTable[errCode - WSAEWOULDBLOCK]); - } else { + errCode -= WSAEWOULDBLOCK; + if (errCode >= sizeof(wsaErrorTable)/sizeof(wsaErrorTable[0])) { Tcl_SetErrno(EINVAL); + } else { + Tcl_SetErrno(wsaErrorTable[errCode]); } } |