X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fio-layer%2Ferror.c;h=41356f4f69b186c653fac5efa8a28df31d239124;hb=655d2753e6827eea041c5d953db1677c49c2a059;hp=7b41f3568bb3ce59e6d5664ba0e3a7e9e52b30d6;hpb=00e065484e866f3a0349c882f804c4a79a13ee5c;p=mono.git diff --git a/mono/io-layer/error.c b/mono/io-layer/error.c index 7b41f3568bb..41356f4f69b 100644 --- a/mono/io-layer/error.c +++ b/mono/io-layer/error.c @@ -26,6 +26,14 @@ static void error_init(void) g_assert (ret == 0); } +void _wapi_error_cleanup (void) +{ + int ret; + + ret = pthread_key_delete (error_key); + g_assert (ret == 0); +} + /** * GetLastError: * @@ -72,53 +80,99 @@ errno_to_WSA (guint32 code, const gchar *function_name) switch (code) { case 0: result = ERROR_SUCCESS; break; case EACCES: result = WSAEACCES; break; +#ifdef EADDRINUSE case EADDRINUSE: result = WSAEADDRINUSE; break; +#endif +#ifdef EAFNOSUPPORT case EAFNOSUPPORT: result = WSAEAFNOSUPPORT; break; +#endif #if EAGAIN != EWOULDBLOCK case EAGAIN: result = WSAEWOULDBLOCK; break; #endif +#ifdef EALREADY case EALREADY: result = WSAEALREADY; break; +#endif case EBADF: result = WSAENOTSOCK; break; +#ifdef ECONNABORTED case ECONNABORTED: result = WSAENETDOWN; break; +#endif +#ifdef ECONNREFUSED case ECONNREFUSED: result = WSAECONNREFUSED; break; +#endif +#ifdef ECONNRESET case ECONNRESET: result = WSAECONNRESET; break; +#endif case EFAULT: result = WSAEFAULT; break; +#ifdef EHOSTUNREACH case EHOSTUNREACH: result = WSAEHOSTUNREACH; break; +#endif +#ifdef EINPROGRESS case EINPROGRESS: result = WSAEINPROGRESS; break; +#endif case EINTR: result = WSAEINTR; break; case EINVAL: result = WSAEINVAL; break; /*FIXME: case EIO: result = WSAE????; break; */ +#ifdef EISCONN case EISCONN: result = WSAEISCONN; break; +#endif /* FIXME: case ELOOP: result = WSA????; break; */ case EMFILE: result = WSAEMFILE; break; +#ifdef EMSGSIZE case EMSGSIZE: result = WSAEMSGSIZE; break; +#endif /* FIXME: case ENAMETOOLONG: result = WSAEACCES; break; */ +#ifdef ENETUNREACH case ENETUNREACH: result = WSAENETUNREACH; break; +#endif +#ifdef ENOBUFS case ENOBUFS: result = WSAENOBUFS; break; /* not documented */ +#endif /* case ENOENT: result = WSAE????; break; */ case ENOMEM: result = WSAENOBUFS; break; +#ifdef ENOPROTOOPT case ENOPROTOOPT: result = WSAENOPROTOOPT; break; +#endif #ifdef ENOSR case ENOSR: result = WSAENETDOWN; break; #endif +#ifdef ENOTCONN case ENOTCONN: result = WSAENOTCONN; break; +#endif /*FIXME: case ENOTDIR: result = WSAE????; break; */ +#ifdef ENOTSOCK case ENOTSOCK: result = WSAENOTSOCK; break; +#endif case ENOTTY: result = WSAENOTSOCK; break; +#ifdef EOPNOTSUPP case EOPNOTSUPP: result = WSAEOPNOTSUPP; break; +#endif case EPERM: result = WSAEACCES; break; case EPIPE: result = WSAESHUTDOWN; break; +#ifdef EPROTONOSUPPORT case EPROTONOSUPPORT: result = WSAEPROTONOSUPPORT; break; +#endif #if ERESTARTSYS case ERESTARTSYS: result = WSAENETDOWN; break; #endif /*FIXME: case EROFS: result = WSAE????; break; */ +#ifdef ESOCKTNOSUPPORT case ESOCKTNOSUPPORT: result = WSAESOCKTNOSUPPORT; break; - case ETIMEDOUT: result = WSAENETDOWN; break; +#endif +#ifdef ETIMEDOUT + case ETIMEDOUT: result = WSAETIMEDOUT; break; +#endif +#ifdef EWOULDBLOCK case EWOULDBLOCK: result = WSAEWOULDBLOCK; break; +#endif +#ifdef EADDRNOTAVAIL case EADDRNOTAVAIL: result = WSAEADDRNOTAVAIL; break; +#endif /* This might happen with unix sockets */ case ENOENT: result = WSAECONNREFUSED; break; +#ifdef EDESTADDRREQ + case EDESTADDRREQ: result = WSAEDESTADDRREQ; break; +#endif + case ENODEV: result = WSAENETDOWN; break; default: sys_error = strerror (code); msg = g_locale_to_utf8 (sys_error, strlen (sys_error), NULL, NULL, NULL); @@ -190,9 +244,11 @@ _wapi_get_win32_file_error (gint err) ret = ERROR_FILENAME_EXCED_RANGE; break; +#ifdef EINPROGRESS case EINPROGRESS: ret = ERROR_IO_PENDING; break; +#endif case ENOSYS: ret = ERROR_NOT_SUPPORTED;