Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Windows), soclose (on OS2), or to close (everywhere else).

Hopefully this fixes a new compilation error that I suddenly get on
Windows because the macro definition for close -> closesocket
apparently was done before including io.h, which contains a prototype
for close.  (No idea why this wasn't an error before.)
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index b96ba65..f23a3be 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -214,17 +214,21 @@
 #if defined(MS_WINDOWS) || defined(__BEOS__)
 /* BeOS suffers from the same socket dichotomy as Win32... - [cjh] */
 /* seem to be a few differences in the API */
-#define close closesocket
+#define SOCKETCLOSE closesocket
 #define NO_DUP /* Actually it exists on NT 3.5, but what the heck... */
 #define FORCE_ANSI_FUNC_DEFS
 #endif
 
 #if defined(PYOS_OS2)
-#define close soclose
+#define SOCKETCLOSE soclose
 #define NO_DUP /* Sockets are Not Actual File Handles under OS/2 */
 #define FORCE_ANSI_FUNC_DEFS
 #endif
 
+#ifndef SOCKETCLOSE
+#define SOCKETCLOSE close
+#endif
+
 #ifdef FORCE_ANSI_FUNC_DEFS
 #define BUILD_FUNC_DEF_1( fnname, arg1type, arg1name )	\
 fnname( arg1type arg1name )
@@ -682,7 +686,7 @@
 					s->sock_type,
 					s->sock_proto);
 	if (sock == NULL) {
-		close(newfd);
+		SOCKETCLOSE(newfd);
 		goto finally;
 	}
 	if (!(addr = makesockaddr((struct sockaddr *) addrbuf, addrlen)))
@@ -889,7 +893,7 @@
 		return NULL;
 	if (s->sock_fd != -1) {
 		Py_BEGIN_ALLOW_THREADS
-		(void) close(s->sock_fd);
+		(void) SOCKETCLOSE(s->sock_fd);
 		Py_END_ALLOW_THREADS
 	}
 	s->sock_fd = -1;
@@ -988,7 +992,7 @@
 					     s->sock_type,
 					     s->sock_proto);
 	if (sock == NULL)
-		close(newfd);
+		SOCKETCLOSE(newfd);
 	return sock;
 }
 
@@ -1112,7 +1116,7 @@
 #endif
 	{
 		if (fd >= 0)
-			close(fd);
+			SOCKETCLOSE(fd);
 		return PySocket_Err();
 	}
 	f = PyFile_FromFile(fp, "<socket>", mode, fclose);
@@ -1357,7 +1361,7 @@
 BUILD_FUNC_DEF_1(PySocketSock_dealloc,PySocketSockObject *,s)
 {
 	if (s->sock_fd != -1)
-		(void) close(s->sock_fd);
+		(void) SOCKETCLOSE(s->sock_fd);
 	PyMem_DEL(s);
 }
 
@@ -1725,7 +1729,7 @@
 	/* If the object can't be created, don't forget to close the
 	   file descriptor again! */
 	if (s == NULL)
-		(void) close(fd);
+		(void) SOCKETCLOSE(fd);
 	/* From now on, ignore SIGPIPE and let the error checking
 	   do the work. */
 #ifdef SIGPIPE      
@@ -1944,8 +1948,8 @@
 				PyString_FromString("newSSLObject error"));
 		return NULL;
 	}
-	memset(self->server, NULL, sizeof(char) * 256);
-	memset(self->issuer, NULL, sizeof(char) * 256);  
+	memset(self->server, '\0', sizeof(char) * 256);
+	memset(self->issuer, '\0', sizeof(char) * 256);  
   
 	self->x_attr = PyDict_New();
 	self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */