From f95dd0a2986392d4f51bb1dd17db50ff40aa90d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Wed, 15 Aug 2001 17:14:33 +0000 Subject: Fix portability problems with glibc 2.0, as reported in #449157. --- Modules/_localemodule.c | 3 +++ Modules/addrinfo.h | 7 ++++++- Modules/getnameinfo.c | 4 ++++ Modules/socketmodule.c | 4 ++++ configure | 4 ++-- configure.in | 2 +- pyconfig.h.in | 3 +++ 7 files changed, 23 insertions(+), 4 deletions(-) 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 @@ init_locale(void) 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 @@ init_locale(void) 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 @@ extern void freehostent Py_PROTO((struct hostent *)); #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 @@ struct gni_sockinet { #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 @@ PyGAI_Err(int error) 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 @@ echo "$ac_t""MACHDEP_OBJS" 1>&6 # 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 @@ AC_MSG_RESULT(MACHDEP_OBJS) # 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 -- cgit v0.12