Autocheck for snprintf, and use sprintf if it is not available.
Remove declaration of h_errno, since it is supposedly declared in netdb.h.
Changes proposed by itojun.
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 1c19c28..863a407 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -1789,9 +1789,6 @@
 
 	if (h == NULL) {
 		/* Let's get real error message to return */
-#ifndef h_errno
-		extern int h_errno;
-#endif
 		PyH_Err(h_errno);
 		return NULL;
 	}
@@ -2348,7 +2345,11 @@
 		return NULL;
 	}
 	if (PyInt_Check(pobj)) {
+#ifndef HAVE_SNPRINTF
+		sprintf(pbuf, "%ld", PyInt_AsLong(pobj));
+#else
 		snprintf(pbuf, sizeof(pbuf), "%ld", PyInt_AsLong(pobj));
+#endif
 		pptr = pbuf;
 	} else if (PyString_Check(pobj)) {
 		pptr = PyString_AsString(pobj);
@@ -2419,7 +2420,11 @@
 	n = PyArg_ParseTuple(sa, "si|ii", &hostp, &port, &flowinfo, scope_id);
 	if (n == 0)
 		goto fail;
+#ifdef HAVE_SPRINTF
 	snprintf(pbuf, sizeof(pbuf), "%d", port);
+#else
+	sprintf(pbuf, "%d", port);
+#endif
 	memset(&hints, 0, sizeof(hints));
 	hints.ai_family = PF_UNSPEC;
 	error = getaddrinfo(hostp, pbuf, &hints, &res);