Mercurial > cpython-lru_cache-weakref
diff Modules/socketmodule.c @ 10453:5b54fa775e55 legacy-trunk
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Wed, 24 Mar 1999 17:20:40 +0000 |
| parents | 9184c9e108f9 |
| children | dad14ffe1c22 |
line wrap: on
line diff
--- a/Modules/socketmodule.c Wed Mar 24 16:20:45 1999 +0000 +++ b/Modules/socketmodule.c Wed Mar 24 17:20:40 1999 +0000 @@ -87,11 +87,6 @@ #include "Python.h" -#if defined(HAVE_GETHOSTBYNAME_R) && defined(HAVE_GETHOSTBYNAME_R_3_ARG) -/* XXX Somebody please submit code for the 3-arg version! */ -#undef HAVE_GETHOSTBYNAME_R -#endif - #if !defined(HAVE_GETHOSTBYNAME_R) && defined(WITH_THREAD) && !defined(MS_WINDOWS) #define USE_GETHOSTBYNAME_LOCK #endif @@ -342,10 +337,14 @@ char ch; #ifdef HAVE_GETHOSTBYNAME_R struct hostent hp_allocated; +#ifdef HAVE_GETHOSTBYNAME_R_3_ARG + struct hostent_data data; +#else char buf[1001]; int buf_len = (sizeof buf) - 1; int errnop; -#ifdef HAVE_GETHOSTBYNAME_R_6_ARG +#endif +#if defined(HAVE_GETHOSTBYNAME_R_3_ARG) || defined(HAVE_GETHOSTBYNAME_R_6_ARG) int result; #endif #endif /* HAVE_GETHOSTBYNAME_R */ @@ -369,10 +368,13 @@ } Py_BEGIN_ALLOW_THREADS #ifdef HAVE_GETHOSTBYNAME_R -#ifdef HAVE_GETHOSTBYNAME_R_6_ARG +#if defined(HAVE_GETHOSTBYNAME_R_6_ARG) result = gethostbyname_r(name, &hp_allocated, buf, buf_len, &hp, &errnop); -#else +#elif defined(HAVE_GETHOSTBYNAME_R_5_ARG) hp = gethostbyname_r(name, &hp_allocated, buf, buf_len, &errnop); +#else /* HAVE_GETHOSTBYNAME_R_3_ARG */ + result = gethostbyname_r(name, &hp_allocated, &data); + hp = (result != 0) ? NULL : &hp_allocated; #endif #else /* not HAVE_GETHOSTBYNAME_R */ #ifdef USE_GETHOSTBYNAME_LOCK @@ -1427,10 +1429,14 @@ PyObject *ret; #ifdef HAVE_GETHOSTBYNAME_R struct hostent hp_allocated; +#ifdef HAVE_GETHOSTBYNAME_R_3_ARG + struct hostent_data data; +#else char buf[16384]; int buf_len = (sizeof buf) - 1; int errnop; -#ifdef HAVE_GETHOSTBYNAME_R_6_ARG +#endif +#if defined(HAVE_GETHOSTBYNAME_R_3_ARG) || defined(HAVE_GETHOSTBYNAME_R_6_ARG) int result; #endif #endif /* HAVE_GETHOSTBYNAME_R */ @@ -1440,10 +1446,13 @@ return NULL; Py_BEGIN_ALLOW_THREADS #ifdef HAVE_GETHOSTBYNAME_R -#ifdef HAVE_GETHOSTBYNAME_R_6_ARG +#if defined(HAVE_GETHOSTBYNAME_R_6_ARG) result = gethostbyname_r(name, &hp_allocated, buf, buf_len, &h, &errnop); -#else +#elif defined(HAVE_GETHOSTBYNAME_R_5_ARG) h = gethostbyname_r(name, &hp_allocated, buf, buf_len, &errnop); +#else /* HAVE_GETHOSTBYNAME_R_3_ARG */ + result = gethostbyname_r(name, &hp_allocated, &data); + h = (result != 0) ? NULL : &hp_allocated; #endif #else /* not HAVE_GETHOSTBYNAME_R */ #ifdef USE_GETHOSTBYNAME_LOCK @@ -1478,10 +1487,14 @@ PyObject *ret; #ifdef HAVE_GETHOSTBYNAME_R struct hostent hp_allocated; +#ifdef HAVE_GETHOSTBYNAME_R_3_ARG + struct hostent_data data; +#else char buf[16384]; int buf_len = (sizeof buf) - 1; int errnop; -#ifdef HAVE_GETHOSTBYNAME_R_6_ARG +#endif +#if defined(HAVE_GETHOSTBYNAME_R_3_ARG) || defined(HAVE_GETHOSTBYNAME_R_6_ARG) int result; #endif #endif /* HAVE_GETHOSTBYNAME_R */ @@ -1492,16 +1505,21 @@ return NULL; Py_BEGIN_ALLOW_THREADS #ifdef HAVE_GETHOSTBYNAME_R -#ifdef HAVE_GETHOSTBYNAME_R_6_ARG +#if defined(HAVE_GETHOSTBYNAME_R_6_ARG) result = gethostbyaddr_r((char *)&addr.sin_addr, sizeof(addr.sin_addr), AF_INET, &hp_allocated, buf, buf_len, &h, &errnop); -#else +#elif defined(HAVE_GETHOSTBYNAME_R_5_ARG) h = gethostbyaddr_r((char *)&addr.sin_addr, sizeof(addr.sin_addr), AF_INET, &hp_allocated, buf, buf_len, &errnop); +#else /* HAVE_GETHOSTBYNAME_R_3_ARG */ + result = gethostbyaddr_r((char *)&addr.sin_addr, + sizeof(addr.sin_addr), + AF_INET, &hp_allocated, &data); + h = (result != 0) ? NULL : &hp_allocated; #endif #else /* not HAVE_GETHOSTBYNAME_R */ #ifdef USE_GETHOSTBYNAME_LOCK
