2005-09-27 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / io-layer / error.c
index b167c1e99992e33e549e7053af01679641f70917..8ede0dcb0394338904801f8824fa1ebc737130c5 100644 (file)
@@ -115,11 +115,14 @@ errno_to_WSA (guint32 code, const gchar *function_name)
        case ESOCKTNOSUPPORT: result = WSAESOCKTNOSUPPORT; break;
        case ETIMEDOUT: result = WSAENETDOWN; break;
        case EWOULDBLOCK: result = WSAEWOULDBLOCK; break;
+       case EADDRNOTAVAIL: result = WSAEADDRNOTAVAIL; break;
+       /* This might happen with unix sockets */
+       case ENOENT: result = WSAECONNREFUSED; break;
        default:
                sys_error = strerror (code);
                msg = g_locale_to_utf8 (sys_error, strlen (sys_error), NULL, NULL, NULL);
                if (function_name == NULL)
-                       function_name = G_GNUC_PRETTY_FUNCTION;
+                       function_name = __func__;
 
                g_warning ("%s: Need to translate %d [%s] into winsock error",
                           function_name, code, msg);
@@ -163,7 +166,7 @@ _wapi_get_win32_file_error (gint err)
                break;
        
        case ENFILE: case EMFILE:
-               ret = ERROR_NO_MORE_FILES;
+               ret = ERROR_TOO_MANY_OPEN_FILES;
                break;
 
        case ENOENT: case ENOTDIR:
@@ -202,8 +205,16 @@ _wapi_get_win32_file_error (gint err)
                ret = ERROR_INVALID_HANDLE;
                break;
                
+       case EINTR:
+               ret = ERROR_IO_PENDING;         /* best match I could find */
+               break;
+               
+       case EPIPE:
+               ret = ERROR_WRITE_FAULT;
+               break;
+               
        default:
-               g_message ("Unknown errno: %s\n", strerror (err));
+               g_message ("Unknown errno: %s\n", g_strerror (err));
                ret = ERROR_GEN_FAILURE;
                break;
        }