diff --git a/src/modules/files/file.c b/src/modules/files/file.c index 2075d4c8504708cea6bf87da72deed230c51d7cd..546bde3a52d00ea7311122d9df39c61c23da82ac 100644 --- a/src/modules/files/file.c +++ b/src/modules/files/file.c @@ -1170,8 +1170,30 @@ void get_inet_addr(struct sockaddr_in *addr,char *name) else { struct hostent *ret; - #ifdef _REENTRANT +#ifdef HAVE_SOLARIS_GETHOSTBYNAME_R + struct hostent result; + char data[2048]; + int h_errno; + + THREADS_ALLOW(); + ret=gethostbyname_r(name, &result, data, sizeof(data), &h_errno); + THREADS_DISALLOW(); +#else +#ifdef HAVE_OSF1_GETHOSTBYNAME_R + struct hostent result; + struct hostent_data data; + + THREADS_ALLOW(); + MEMSET((char *)&data,0,sizeof(data)); + if(gethostbyname_r(name, &result, &data) < 0) + { + ret=&result; + }else{ + ret=0; + } + THREADS_DISALLOW(); +#else static MUTEX_T l; THREADS_ALLOW(); @@ -1181,6 +1203,8 @@ void get_inet_addr(struct sockaddr_in *addr,char *name) mt_unlock(&l); THREADS_DISALLOW(); +#endif +#endif #else ret=gethostbyname(name); #endif