Fix portability problems with glibc 2.0, as reported in #449157.
diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c
index 3f11054..7f7bdd2 100644
--- a/Modules/_localemodule.c
+++ b/Modules/_localemodule.c
@@ -527,6 +527,8 @@
     ADDINT(ABMON_11);
     ADDINT(ABMON_12);
 
+#ifdef RADIXCHAR
+    /* The following are not available with glibc 2.0 */
     ADDINT(RADIXCHAR);
     ADDINT(THOUSEP);
     /* YESSTR and NOSTR are deprecated in glibc, since they are
@@ -537,6 +539,7 @@
     ADDINT(NOSTR);
     */
     ADDINT(CRNCYSTR);
+#endif
 
     ADDINT(D_T_FMT);
     ADDINT(D_FMT);
diff --git a/Modules/addrinfo.h b/Modules/addrinfo.h
index 6d0991d..686a4b8 100644
--- a/Modules/addrinfo.h
+++ b/Modules/addrinfo.h
@@ -67,6 +67,10 @@
 #define	AI_DEFAULT	(AI_V4MAPPED_CFG | AI_ADDRCONFIG)
 #endif
 
+#endif /* HAVE_GETADDRINFO */
+
+#ifndef HAVE_GETNAMEINFO
+
 /*
  * Constants for getnameinfo()
  */
@@ -86,6 +90,8 @@
 #define	NI_DGRAM	0x00000010
 #endif
 
+#endif /* HAVE_GETNAMEINFO */
+
 #ifndef HAVE_ADDRINFO
 struct addrinfo {
 	int	ai_flags;	/* AI_PASSIVE, AI_CANONNAME */
@@ -137,4 +143,3 @@
 #ifdef __cplusplus
 }
 #endif
-#endif
diff --git a/Modules/getnameinfo.c b/Modules/getnameinfo.c
index 475b531..4827bc6 100644
--- a/Modules/getnameinfo.c
+++ b/Modules/getnameinfo.c
@@ -81,6 +81,10 @@
 #define ENI_FAMILY	5
 #define ENI_SALEN	6
 
+/* forward declaration to make gcc happy */
+int getnameinfo Py_PROTO((const struct sockaddr *, size_t, char *, size_t,
+			  char *, size_t, int));
+
 int
 getnameinfo(sa, salen, host, hostlen, serv, servlen, flags)
 	const struct sockaddr *sa;
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 16b81ac..525a19e 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -447,7 +447,11 @@
 	if (error == EAI_SYSTEM)
 		return PySocket_Err();
 
+#ifdef HAVE_GAI_STRERROR
 	v = Py_BuildValue("(is)", error, gai_strerror(error));
+#else
+	v = Py_BuildValue("(is)", error, "getaddrinfo failed");
+#endif
 	if (v != NULL) {
 		PyErr_SetObject(PyGAI_Error, v);
 		Py_DECREF(v);
diff --git a/configure b/configure
index 0d8ef9d..0e06ff0 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-# From configure.in Revision: 1.245 
+# From configure.in Revision: 1.246 
 
 # Guess values for system-dependent variables and create Makefiles.
 # Generated automatically using autoconf version 2.13 
@@ -4570,7 +4570,7 @@
 # checks for library functions
 for ac_func in alarm chown clock confstr ctermid ctermid_r execv \
  flock fork fsync fdatasync fpathconf ftime ftruncate \
- getgroups getlogin getpeername getpid getpwent getwd \
+ gai_strerror getgroups getlogin getpeername getpid getpwent getwd \
  hstrerror inet_pton kill link lstat mkfifo mktime mremap \
  nice pathconf pause plock poll pthread_init \
  putenv readlink \
diff --git a/configure.in b/configure.in
index aa27dd6..515bc1e 100644
--- a/configure.in
+++ b/configure.in
@@ -1236,7 +1236,7 @@
 # checks for library functions
 AC_CHECK_FUNCS(alarm chown clock confstr ctermid ctermid_r execv \
  flock fork fsync fdatasync fpathconf ftime ftruncate \
- getgroups getlogin getpeername getpid getpwent getwd \
+ gai_strerror getgroups getlogin getpeername getpid getpwent getwd \
  hstrerror inet_pton kill link lstat mkfifo mktime mremap \
  nice pathconf pause plock poll pthread_init \
  putenv readlink \
diff --git a/pyconfig.h.in b/pyconfig.h.in
index bdb242c..72fad87 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -371,6 +371,9 @@
 /* Define if you have the ftruncate function.  */
 #undef HAVE_FTRUNCATE
 
+/* Define if you have the gai_strerror function.  */
+#undef HAVE_GAI_STRERROR
+
 /* Define if you have the getaddrinfo function.  */
 #undef HAVE_GETADDRINFO