glib r7010 - in trunk: . glib



Author: tml
Date: Wed Jun 11 18:06:46 2008
New Revision: 7010
URL: http://svn.gnome.org/viewvc/glib?rev=7010&view=rev

Log:
2008-06-11  Tor Lillqvist  <tml novell com>

	* glib/giowin32.c: g_win32_error_message() works fine for the
	Winsock WSA* error codes, too, so drop the winsock_error_message()
	function.



Modified:
   trunk/ChangeLog
   trunk/glib/giowin32.c

Modified: trunk/glib/giowin32.c
==============================================================================
--- trunk/glib/giowin32.c	(original)
+++ trunk/glib/giowin32.c	Wed Jun 11 18:06:46 2008
@@ -227,122 +227,6 @@
   return (getenv ("G_IO_WIN32_DEBUG") != NULL);
 }
 
-static char *
-winsock_error_message (int number)
-{
-  static char unk[100];
-
-  switch (number) {
-  case WSAEINTR:
-    return "Interrupted function call";
-  case WSAEACCES:
-    return "Permission denied";
-  case WSAEFAULT:
-    return "Bad address";
-  case WSAEINVAL:
-    return "Invalid argument";
-  case WSAEMFILE:
-    return "Too many open sockets";
-  case WSAEWOULDBLOCK:
-    return "Resource temporarily unavailable";
-  case WSAEINPROGRESS:
-    return "Operation now in progress";
-  case WSAEALREADY:
-    return "Operation already in progress";
-  case WSAENOTSOCK:
-    return "Socket operation on nonsocket";
-  case WSAEDESTADDRREQ:
-    return "Destination address required";
-  case WSAEMSGSIZE:
-    return "Message too long";
-  case WSAEPROTOTYPE:
-    return "Protocol wrong type for socket";
-  case WSAENOPROTOOPT:
-    return "Bad protocol option";
-  case WSAEPROTONOSUPPORT:
-    return "Protocol not supported";
-  case WSAESOCKTNOSUPPORT:
-    return "Socket type not supported";
-  case WSAEOPNOTSUPP:
-    return "Operation not supported on transport endpoint";
-  case WSAEPFNOSUPPORT:
-    return "Protocol family not supported";
-  case WSAEAFNOSUPPORT:
-    return "Address family not supported by protocol family";
-  case WSAEADDRINUSE:
-    return "Address already in use";
-  case WSAEADDRNOTAVAIL:
-    return "Address not available";
-  case WSAENETDOWN:
-    return "Network interface is not configured";
-  case WSAENETUNREACH:
-    return "Network is unreachable";
-  case WSAENETRESET:
-    return "Network dropped connection on reset";
-  case WSAECONNABORTED:
-    return "Software caused connection abort";
-  case WSAECONNRESET:
-    return "Connection reset by peer";
-  case WSAENOBUFS:
-    return "No buffer space available";
-  case WSAEISCONN:
-    return "Socket is already connected";
-  case WSAENOTCONN:
-    return "Socket is not connected";
-  case WSAESHUTDOWN:
-    return "Can't send after socket shutdown";
-  case WSAETIMEDOUT:
-    return "Connection timed out";
-  case WSAECONNREFUSED:
-    return "Connection refused";
-  case WSAEHOSTDOWN:
-    return "Host is down";
-  case WSAEHOSTUNREACH:
-    return "Host is unreachable";
-  case WSAEPROCLIM:
-    return "Too many processes";
-  case WSASYSNOTREADY:
-    return "Network subsystem is unavailable";
-  case WSAVERNOTSUPPORTED:
-    return "Winsock.dll version out of range";
-  case WSANOTINITIALISED:
-    return "Successful WSAStartup not yet performed";
-  case WSAEDISCON:
-    return "Graceful shutdown in progress";
-  case WSATYPE_NOT_FOUND:
-    return "Class type not found";
-  case WSAHOST_NOT_FOUND:
-    return "Host not found";
-  case WSATRY_AGAIN:
-    return "Nonauthoritative host not found";
-  case WSANO_RECOVERY:
-    return "This is a nonrecoverable error";
-  case WSANO_DATA:
-    return "Valid name, no data record of requested type";
-  case WSA_INVALID_HANDLE:
-    return "Specified event object handle is invalid";
-  case WSA_INVALID_PARAMETER:
-    return "One or more parameters are invalid";
-  case WSA_IO_INCOMPLETE:
-    return "Overlapped I/O event object not in signaled state";
-  case WSA_NOT_ENOUGH_MEMORY:
-    return "Insufficient memory available";
-  case WSA_OPERATION_ABORTED:
-    return "Overlapped operation aborted";
-  case WSAEINVALIDPROCTABLE:
-    return "Invalid procedure table from service provider";
-  case WSAEINVALIDPROVIDER:
-    return "Invalid service provider version number";
-  case WSAEPROVIDERFAILEDINIT:
-    return "Unable to initialize a service provider";
-  case WSASYSCALLFAILURE:
-    return "System call failure";
-  default:
-    sprintf (unk, "Unknown WinSock error %d", number);
-    return unk;
-  }
-}
-
 static void
 g_io_channel_win32_init (GIOWin32Channel *channel)
 {
@@ -1470,12 +1354,15 @@
     winsock_error = WSAGetLastError ();
 
   if (win32_channel->debug)
-    g_print (" recv=%d %s\n",
-	     result,
-	     (result == SOCKET_ERROR ? winsock_error_message (winsock_error) : ""));
+    g_print (" recv=%d", result);
   
   if (result == SOCKET_ERROR)
     {
+      gchar *emsg = g_win32_error_message (winsock_error);
+
+      if (win32_channel->debug)
+	g_print (" %s\n", emsg);
+
       *bytes_read = 0;
 
       switch (winsock_error)
@@ -1484,17 +1371,21 @@
           error = G_IO_CHANNEL_ERROR_INVAL;
           break;
 	case WSAEWOULDBLOCK:
+	  g_free (emsg);
           return G_IO_STATUS_AGAIN;
 	default:
 	  error = G_IO_CHANNEL_ERROR_FAILED;
           break;
 	}
-      g_set_error (err, G_IO_CHANNEL_ERROR, error,
-		   winsock_error_message (winsock_error));
+      g_set_error (err, G_IO_CHANNEL_ERROR, error, emsg);
+      g_free (emsg);
+
       return G_IO_STATUS_ERROR;
     }
   else
     {
+      if (win32_channel->debug)
+	g_print ("\n");
       *bytes_read = result;
       if (result == 0)
 	return G_IO_STATUS_EOF;
@@ -1524,12 +1415,15 @@
     winsock_error = WSAGetLastError ();
 
   if (win32_channel->debug)
-    g_print (" send=%d %s\n",
-	     result,
-	     (result == SOCKET_ERROR ? winsock_error_message (winsock_error) : ""));
+    g_print (" send=%d", result);
   
   if (result == SOCKET_ERROR)
     {
+      gchar *emsg = g_win32_error_message (winsock_error);
+
+      if (win32_channel->debug)
+	g_print (" %s\n", emsg);
+
       *bytes_written = 0;
 
       switch (winsock_error)
@@ -1540,18 +1434,21 @@
 	case WSAEWOULDBLOCK:
 	  win32_channel->write_would_have_blocked = TRUE;
 	  win32_channel->last_events = 0;
+	  g_free (emsg);
           return G_IO_STATUS_AGAIN;
 	default:
 	  error = G_IO_CHANNEL_ERROR_FAILED;
           break;
 	}
-      g_set_error (err, G_IO_CHANNEL_ERROR, error,
-		   winsock_error_message (winsock_error));
+      g_set_error (err, G_IO_CHANNEL_ERROR, error, emsg);
+      g_free (emsg);
 
       return G_IO_STATUS_ERROR;
     }
   else
     {
+      if (win32_channel->debug)
+	g_print ("\n");
       *bytes_written = result;
       win32_channel->write_would_have_blocked = FALSE;
 
@@ -1886,9 +1783,13 @@
       arg = 1;
       if (ioctlsocket (win32_channel->fd, FIONBIO, &arg) == SOCKET_ERROR)
 	{
+	  gchar *emsg = g_win32_error_message (WSAGetLastError ());
+
 	  g_set_error (err, G_IO_CHANNEL_ERROR,
 		       G_IO_CHANNEL_ERROR_FAILED,
-		       winsock_error_message (WSAGetLastError ()));
+		       emsg);
+	  g_free (emsg);
+
 	  return G_IO_STATUS_ERROR;
 	}
     }
@@ -1897,9 +1798,13 @@
       arg = 0;
       if (ioctlsocket (win32_channel->fd, FIONBIO, &arg) == SOCKET_ERROR)
 	{
+	  gchar *emsg = g_win32_error_message (WSAGetLastError ());
+
 	  g_set_error (err, G_IO_CHANNEL_ERROR,
 		       G_IO_CHANNEL_ERROR_FAILED,
-		       winsock_error_message (WSAGetLastError ()));
+		       emsg);
+	  g_free (emsg);
+
 	  return G_IO_STATUS_ERROR;
 	}
     }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]