struct hostent *ei_gethostbyname_r(const char *name, struct hostent *hostp, char *buffer, int buflen, int *h_errnop) { #ifndef _REENTRANT /* threads disabled, no need to call reentrant function */ return gethostbyname(name); #else #ifndef HAVE_GETHOSTBYNAME_R return my_gethostbyname_r(name,hostp,buffer,buflen,h_errnop); #else #if (defined(__GLIBC__) || (__FreeBSD_version >= 602000) || defined(__DragonFly__)) struct hostent *result; gethostbyname_r(name, hostp, buffer, buflen, &result, h_errnop); return result; #else return gethostbyname_r(name,hostp,buffer,buflen,h_errnop); #endif #endif #endif }
struct hostent *ei_gethostbyname_r(const char *name, struct hostent *hostp, char *buffer, int buflen, int *h_errnop) { #ifndef _REENTRANT /* threads disabled, no need to call reentrant function */ return gethostbyname(name); #else #ifndef HAVE_GETHOSTBYNAME_R return my_gethostbyname_r(name,hostp,buffer,buflen,h_errnop); #else #ifdef __GLIBC__ struct hostent *result; gethostbyname_r(name, hostp, buffer, buflen, &result, h_errnop); return result; #else return gethostbyname_r(name,hostp,buffer,buflen,h_errnop); #endif #endif #endif }
struct hostent *ei_gethostbyname_r(const char *name, struct hostent *hostp, char *buffer, int buflen, int *h_errnop) { struct hostent *h = NULL; /* use own func if sens function not available */ if (!sens_gethostbyname) { h = my_gethostbyname_r(name,hostp,buffer,buflen,h_errnop); } else { if (!(h = sens_gethostbyname(name,buffer,buflen))) { /* sens returns status via errno */ *h_errnop = errno; } else { *hostp = *h; *h_errnop = 0; } } return h; }
int sockinetaddr::setaddr(const char* host_name) { if ( (sin_addr.s_addr = inet_addr(host_name)) == (in_addr_t) -1) { int hostErrno; struct hostent hostResult; char hostBuffer[4096]; hostent* hp; if ((my_gethostbyname_r(host_name, &hostResult, hostBuffer, 2048, &hp, &hostErrno) != 0) || (hp == 0)) { return -1; } memcpy(&sin_addr, hp->h_addr, hp->h_length); sin_family = hp->h_addrtype; } else sin_family = sockinetbuf::af_inet; return 0; }